rsync
실행 후 원격 서버로 전송될 파일 목록을 얻기 위해 다음 명령을 실행했습니다.
rsync -avzm --stats --safe-links --ignore-existing --dry-run --human-readable /tmp/test REMOTE-HOST:/tmp/data/ >> /tmp/transfer.log
파일 목록(모든 PDF)을 얻으려면 다음 명령을 실행했습니다.
grep 'pdf$' transfer.log > files.txt
파일의 절대 경로를 볼 수 없습니다.
test/2103/0E/210321449902_NR_1/210321449902-1-A4-NB.pdf
test/2103/0E/210321481320_NR_1/210321481320.AKPML.pdf
test/2103/0E/210321779915_NR_1/210321779915-1-A4-NB.pdf
test/2103/0E/210321959975_NR_1/210321959975-01-A4-NB.pdf
rsync
파일의 절대 경로를 얻기 위해 연습 실행을 수행할 때 어떤 옵션을 사용해야 합니까?
GNU를 사용하여 파일을 나열하고 여러 파일을 실행할 수 있도록 이 파일 목록을 사용해야 합니다 cat
. (좋다rsync
parallel
이것질문)
답변1
경로는 소스(및 대상)를 기준으로 보고됩니다. 귀하의 경우에는 지정된 소스 루트가 있으므로 /tmp/test
전체 경로를 생성하려면 샘플 파일 세트 앞에 이 접두사가 와야 합니다. 그러나 소스 트리 /
의 내용이 타겟에 직접 도달하도록 소스 트리를 종료해야 하기 때문에 상황은 그리 간단하지 않습니다. 보시다시피 실제 접두사는 바로 /tmp
그 /tmp/test
것이며 test
복사된 파일에 포함되어 있습니다. 그래서...
sed
이를 위해 다른 적합한 도구를 사용할 수 있습니다 .
sed -n '/pdf$/s!^!/tmp/!p' transfer.log > files.txt
# ^^^^^ the transfer prefix
cat files.txt
/tmp/test/2103/0E/210321449902_NR_1/210321449902-1-A4-NB.pdf
/tmp/test/2103/0E/210321481320_NR_1/210321481320.AKPML.pdf
/tmp/test/2103/0E/210321779915_NR_1/210321779915-1-A4-NB.pdf
/tmp/test/2103/0E/210321959975_NR_1/210321959975-01-A4-NB.pdf
답변2
--out-format
옵션을 사용하여 모든 형식을 지정할 수 있습니다 .
귀하의 경우에는 --out-format='/%f%L'
명령에 다음을 추가하십시오.
rsync -avzm --stats --safe-links --ignore-existing --dry-run --human-readable --out-format='/%f%L' /tmp/test REMOTE-HOST:/tmp/data/ >> /tmp/transfer.log