나는 rsync를 사용하여 Syncthing을 통해 다른 장치와 동기화되는 폴더(의도적으로 생략된 디렉토리)에 일부 파일을 복사합니다.
find /mnt/media/ -name "*.epub" > /home/user/.logs/rsync/epub-paths.txt && \
rsync --archive --files-from=/home/user/.logs/rsync/epub-paths.txt \
--no-relative / /home/user/Documents/ebooks/
이러한 파일은 내가 만든 것이 아니며 파일 이름에 공백과 문자가 포함되는 경우가 많아 셸에서 문제가 됩니다. 슬프게도마운트된 소스 드라이브의 모든 이름을 쉽게 바꿀 수 없습니다.
나는 사용할 계획이다디톡스대상 전자책 디렉토리는 재귀적으로 처리되지만 프로그램은 기존 파일을 대체하지 않습니다. 이 경우 파일은 모두 동일합니다. 안타깝게도 모든 중복 항목을 제거하더라도 rsync는 스크립트를 실행할 때마다(현재 매일) 기가바이트의 데이터를 헛되이 전송합니다. 사용뒤퓌또는 이후에 중복 파일을 삭제하는 유사한 방법은 실용적인 해결책이 아닙니다.
즉, 로컬 데이터를 수정하지 말고 대상에 쓰기 전에 rsync 전송에서 파일 이름(및 폴더가 있는 경우)을 다시 쓰십시오.
답변1
NULL로 끝나는 매개변수를 사용할 수도 있습니다.
find /mnt/media/ -name '*.epub' -print0 |
rsync -as --files-from=- --from0 --no-relative / /home/user/Documents/ebooks
또는 find
POSIX를 사용 중이고 해당 옵션이 없다면 -print0
약간 덜 포괄적인 다음 솔루션을 사용해 보세요.
find /mnt/media/ -name '*.epub' |
rsync -as --files-from=- --no-relative / /home/user/Documents/ebooks