rsync -avz
최신 Linux Mint 설치에서 이전에 사용한 데이터를 백업했습니다. 이제 Windows 10 Ubuntu 하위 시스템에서 동일한 명령을 사용하여 데이터를 백업하려고 하면 rsync는 대상 파일을 무시하고 소스에서 대상으로 모든 파일을 복사하려고 시도합니다. 또한 여러 파일에 대해 2가지 다른 오류 메시지가 표시됩니다.
rsync: chgrp "/mnt/p/file" failed: Operation not permitted (1)
그리고
rsync: mkstemp "/mnt/p/file" failed: Operation not permitted (1)
권한은 별로 신경 쓰지 않고 데이터를 외장 하드 드라이브에 백업하고 싶습니다.
인터넷 검색 솔루션을 시도했지만 다음 중 어느 것도 도움이 되지 않았습니다.
sudo chown -R user:user /mnt/p
# 효과 없음
rsync -rlptgoD --chmod=ugo=rwX
# 동일한 오류가 발생하고 파일을 전혀 복사하지 않습니다.
rsync -avz --no-o --no-g --no-perms
# "시간을 설정할 수 없습니다" 오류 발생
편집하다:
나는 제공된 또 다른 옵션인 을 시도했는데 rsync -rtDvz
, 이는 rsync: failed to set times on "/mnt/p/file": Operation not permitted (1)
모든 파일에 적용됩니다. 또한 전송은 불가능하더라도 모든 파일을 수정하려고 하기 때문에 시간이 오래 걸립니다.
또한 명령을 실행하고 를 sudo chown -R user /mnt/p
사용하여 파일 권한을 확인 ls -l p
하면 모든 파일 권한이 root root
. 어떤 이유로 외장 하드 드라이브 파일에 대한 파일 권한을 변경할 수 없습니다.
아 예, 외부 USB 스틱, Fat32 파일 시스템에 데이터를 백업하려고 한다는 점을 말씀드리고 싶습니다... 죄송합니다! 질문을 할 때 무엇이 중요하고 무엇이 중요하지 않은지 항상 깨닫지는 못합니다.
답변1
매뉴얼 rsync
페이지에는 -a
이것이 -rlptgoD
. rsync 명령(예:)에서 이 교체를 수행한 rsync -rlptgoDvz
다음 NTFS에서 손상된 다양한 옵션을 제거하는 것이 좋습니다. 최소한 -p
(권한), -g
(그룹), -o
(소유자) 및 아마도 -l
(symlink)를 제거해야 할 것으로 예상됩니다. 이 항목을 모두 제거하면 다음과 같은 결과가 남습니다.
rsync -rtDvz
답변2
저는 WSL Ubuntu(Windows 10)에서 rsync를 사용하여 네트워크 연결 볼륨과 동기화할 때 이 문제에 대한 해결책을 찾고 있었는데 이 솔루션이 USB 스틱에서도 작동할 것이라고 생각합니다. 나에게 도움이 된 것은 드라이브를 마운트할 때 사용자와 그룹을 설정하는 것이었습니다. 예를 들어:
sudo mount -t drvfs -o rw,noatime,uid=1000,gid=1000 'P:\' /mnt/p
해당 --update/-u
매개변수를 사용하는 것은 대상에서 최신 날짜/시간이 있는 파일을 건너뛰어 작동하게 만드는 멋진 방법이지만, 파일의 날짜/시간을 더 정확하게 일치시키려면(제가 했던 것처럼) 다음보다 적습니다. 이상적인 솔루션. 물론 시스템에 따라 uid 및 gid 값이 다를 수 있으므로 /proc/mounts
다른 마운트에서 이미 어떤 값을 사용하고 있는지 확인하세요.
cat /proc/mounts
날짜/시간에 대한 권한을 확인한 후 명령을 제거 --update
하고 다음과 같이 단축할 수 있습니다.
rsync -rt --progress --modify-window=1 "$SOURCE" "$DEST"
--modify-window=1
제가 수행한 다른 연구에 따르면 Windows의 일부 상황에서 필요할 수 있는 것처럼 보이기 때문에 여전히 유용할 수 있다고 생각했습니다 .
답변3
이 명령을 사용하면 문제가 해결되었습니다.
rsync --progress --modify-window=1 --update --recursive --times
여전히 "시간을 설정할 수 없습니다" 오류가 발생하지만 적어도 이제 동기화는 제대로 작동합니다. 나는 여기에서 답을 찾았습니다.https://serverfault.com/a/144475
답변4
데스크톱 컴퓨터에서 SSH 데몬을 실행하는 Android 휴대폰으로 파일을 전송하려고 할 때도 동일한 문제가 발생했습니다(단순SSHD?
버전 27) 이 문제는 이름에 이 문자가 포함된 일부 파일로 인해 발생합니다. 역할을 삭제했는데 모든 것이 잘 작동합니다.
아래에서는 문제의 원인인지 확인하기 위해 실행한 두 명령 ?
(물음표)을 볼 수 있습니다.
아래 표시된 명령에서는 이라는 파일을 전송하려고 합니다 foo.txt
. 명령이 성공적으로 실행됩니다( 0
종료 코드는 마지막 줄 참조).
$ rsync -a --progress -vv ~/Downloads/foo.txt myphone:/sdcard/Download
opening connection using: ssh myphone rsync --server -vvlogDtpre.iLsfxCIvu . /sdcard/Download (7 args)
sending incremental file list
delta-transmission enabled
foo.txt
2 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=0/1)
total: matches=0 hash_hits=0 false_alarms=0 data=2
sent 115 bytes received 66 bytes 120.67 bytes/sec
total size is 2 speedup is 0.01
$ echo $?
0
아래 표시된 명령에서는 이라는 파일을 전송하려고 합니다 foo?.txt
. 명령 결과 오류가 발생했습니다( 23
마지막 줄의 종료 코드 참조).
$ rsync -a --progress -vv ~/Downloads/foo?.txt myphone:/sdcard/Download
opening connection using: ssh myphone rsync --server -vvlogDtpre.iLsfxCIvu . /sdcard/Download (7 args)
sending incremental file list
delta-transmission enabled
foo?.txt
2 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=0/1)
rsync: mkstemp "/sdcard/Download/.foo?.txt.Vn5pbV" failed: Operation not permitted (1)
total: matches=0 hash_hits=0 false_alarms=0 data=2
sent 116 bytes received 157 bytes 182.00 bytes/sec
total size is 2 speedup is 0.01
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1326) [sender=v3.2.4]
$ echo $?
23