rsync 전용 파일 이름

rsync 전용 파일 이름

하는 것이 가능하니오직파일 이름을 재동기화하시겠습니까? 저장 상자가 있는데 파일 이름(및 해당 경로)을 다른 상자에 추가하고 싶습니다. 현재 각 파일을 생성 중입니다 touch(0바이트 크기로 생성됨). 시간이 너무 오래 걸리고 rsync.

그렇지 않다면 이를 허용하는 다른 도구가 있습니까? 아니면 사용자 정의 코드를 작성해야 합니까?

답변1

빈 파일을 생성하는 것이 목표라면 다음과 같이 템플릿을 생성할 수 있습니다.

#!/bin/bash
FILES=$1 # original structure
TMPL=$2  # where to create empty files
[[ -d $FILES ]] || exit 1
[[ -d $TMPL ]] || mkdir -p $TMPL || exit 1

cd $TMPL
find "$FILES" -type d -printf "$TMPL%p\0" | sort -z |xargs -0 -L 1000 mkdir -p
find "$FILES" -type f -printf "$TMPL%p\0" | xargs -0 -L 1000 touch

이렇게 하면 원본 트리의 모든 파일에 대한 디렉터리가 생성되고 TMPL 아래에 생성된 폴더의 파일이 변경됩니다.

빈 파일만으로 "미러링된" 폴더를 생성한 후 다른 폴더와 마찬가지로 모든 호스트에 재동기화할 수 있습니다.

rsync -av -e 'ssh -p 22 -l username' \
    /template/structure remotehost:/backup/templates/

사용자 이름이 두 호스트 모두에서 동일하고 sshd가 기본 포트에서 실행되는 경우 -e 옵션은 선택 사항입니다. from 및 to 부분 둘 다 또는 하나에 후행 슬래시를 지정하면 어떤 일이 발생하는지 주의하세요. 그것은 중요합니다. Remotehost 매개변수는 별칭 대신 IP 주소일 수 있습니다.

답변2

rsync자체에는 파일만 생성하는 옵션이 없는 것 같습니다. 그러나 수동으로 터치하는 대신 다양한 방법을 시도해 볼 수 있습니다.

  • 디렉토리 트리를 rsync한 다음 find해당 트리의 루트와 echo "" >각 파일에서 실행합니다.
  • find디렉토리 트리 목록을 가져온 다음 해당 목록의 각 요소에 사용하고 ( mkdir -p시스템 호출 수를 최소화하기 위해 미리 역정렬할 수도 있음) touch유사하게 생성된 파일 목록에 사용합니다.

그러나 공간이 사용 가능한 경우 첫 번째 옵션을 사용하겠습니다. 권한과 액세스 권한이 유지되기 때문입니다( 에 대한 적절한 인수 제공 rsync).

관련 정보