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
(シンボリックリンク)を削除する必要があります。このアイテムをすべて削除すると、次の結果が残ります。
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) この問題は、名前にこの文字が含まれる一部のファイルが原因で発生します。役割を削除しましたが、すべてがうまくいきます。
以下では、問題の原因であることを確認するために実行した2つのコマンド?
(疑問符)を表示できます。
以下のコマンドは、というファイルを転送しようとします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