하는 것이 가능하니오직파일 이름을 재동기화하시겠습니까? 저장 상자가 있는데 파일 이름(및 해당 경로)을 다른 상자에 추가하고 싶습니다. 현재 각 파일을 생성 중입니다 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
).