토렌트에 사용하는 Seedbox 계정이 있습니다. 나는 rsync
Seedbox의 모든 파일을 14.04.1 우분투 서버로 다운로드하기 위해 cron 작업을 설정했습니다 . 다운로드 폴더는 삼바 공유입니다. 이전에 Windows를 사용하여 콘텐츠를 서버의 보다 영구적인 위치로 이동하기 전에 폴더로 구성했기 때문입니다. 14.04로 업그레이드하기 전에는 12.04를 사용하고 있었는데 모든 것이 괜찮았습니다.
문제는 내가 시드박스에서 얻은 파일을 "544"(8진수가 아닌 시드박스에 의해 생성된 사용자 이름)라는 이름의 사용자가 소유하고 있으며 내 서버의 해당 사용자가 이를 삭제할 수 없다는 것입니다. 다운로드 폴더의 권한을 변경한 후 해당 폴더를 삭제할 수 있었습니다. 그리고 삼바 폴더를 공유할 때 모든 사용자에게 읽기/쓰기 권한을 주었습니다.
그래서 제 질문은: 파일을 다운로드하는 동안 우아한 명령을 실행하여 파일의 사용자/권한을 변경할 수 있습니까 rsync
? 아니면 폴더에 복사/이동할 때 모든 새 파일이 자동으로 사용자를 변경하도록 폴더 기능을 만들 수 있습니까? 파일 소유자를 변경하기 위해 sudo cron에 명령을 넣을 수 있다고 가정합니다 chmod
. 그러나 다운로드할 데이터의 양이 상당히 클 수 있기 때문에 때로는 언제 실행해야 할지 알기 어렵습니다. rsync-job을 사용하여 모든 파일이 다운로드되었는지 확인하세요.
답변1
rsync
오직요청하는 경우 소유자를 유지하세요 . 그렇지 않으면 다른 파일을 만들 때와 마찬가지로 -o
명령을 실행하는 사용자가 파일을 소유하게 됩니다 . rsync
그러나 -a
포함되어 있으므로 -o
많은 일반 rsync
명령줄에 포함되어 있습니다.man rsync
분명히 다음 구절이 포함되어 있습니다:
For example: if you want to use -a (--archive) but don’t want -o
(--owner), instead of converting -a into -rlptgD, you could
specify -a --no-o (or -a --no-owner).
따라서 명령을 실행하는 사용자가 파일을 소유하도록 하는 데 rsync -a source dest
사용할 수 있습니다 .rsync -a --no-o source dest
반면, 루트인 경우에는 일반적으로 파일 소유자만 변경할 수 있으므로 이런 일이 많이 발생하지 않습니다. 어떤 이유로 이 작업을 루트로 실행해야 하고 루트가 아닌 일반 사용자가 파일을 소유하게 하려는 경우 다음 --chown
옵션을 사용할 수 있습니다.
rsync -a --chown=youruser:yourgroup ...
--usermap
일부 사용자를 유지하려는 경우 더 복잡한 매핑을 선택할 수도 있습니다. 쉼표로 구분된 쌍 목록을 사용합니다 from:to
.
마지막 옵션으로 rsync
cron 작업에서 실행 중이므로 소유자/권한 변경 작업을 cron 작업에 간단히 연결할 수 있습니다 && chown ...
.
답변2
몇 가지 방법을 테스트했지만 제 경우에는 이 스크립트의 결과를 예로 들었습니다.
rsync -a -v --progress --modify-window=1 -c -b -i -s -m --del -vv --ignore-errors --chmod=ugo=rwx --delete --delete-excluded --exclude='*~' --exclude='.*' --backup-dir=.rsync_bak /home/test /media/user/usb_ext4
예, 권한은 파일을 작성해야 하는 파티션/대상의 권한보다 넓을 수 없습니다. (기기 설치 후 해당 권한을 확인하세요)