Rsyncを実行するために別の場所にコピーできないファイルを見つけたいです。外付けハードドライブとシステムのハードドライブがあります。外付けハードドライブに私のシステムから欠落しているファイルがあります。どうすればいいのか気になります。
権限が拒否されたファイル/ディレクトリを見つけることができます。 - メッセージ
find / ! -perm /u+r
権限はいくつありますか?
drwx------ 1 501 root 6 Oct 22 2014 PortableCV_WebCruiter_20141022
次のコマンドが機能します。コマンドライン fu.com、ここではリモートデータを外付けハードドライブとして扱うことができるからです。
rsync --rsync-path 'sudo rsync' username@source:/folder/ /local/
どの
sudoを使用してrootとしてリモートデータを再同期するユーザーがリモートシステムにsudoを持っている場合は、rootとしてログインしなくてもrootとしてデータを再同期できます。これは、リモートシステムがSSHを介したルートログインを許可しない場合に便利です(一般的なセキュリティ制限)。
外付けハードドライブとシステムハードドライブの間で権限拒否の問題があるファイルを同期する方法は?
答え1
読み取れないファイルをスキップするには:
find /external/hd/folder ! -readable -print >unreadable_files
rsync -a --exclude-from=unreadable_files /external/hd/folder/ /local/folder
これはGNUを使用しておりfind
、ファイル名に改行文字が含まれていないと仮定します。
外部ディスクから読み取れるかどうかに関係なく、すべてのファイルをコピーするには、次の手順を実行します。
sudo rsync -a /external/hd/folder/ /local/folder
sudo chown -R masi:masi /local/folder
sudo rsync
これは、およびを実行するのに十分な権限があると仮定しますsudo chown
。
答え2
外付けハードドライブをローカルシステムにマウントしている場合は、リモートではありません。私が誤解しない限り、HDDはrsyncデーモンを実行し、ネットワーク経由で接続されていますか?しかし、忘れてください。ドライブをローカルにマウントできますか? @mjturnerが言ったように、あなたがしなければならないことはrsync
rootとして実行されていて、それが直接コピーであることを確認するだけですsudo rsync -a /mount/for/hdd/folder/ /local/
。
答え3
rsync
外付けハードドライブのすべてのファイルをシステムハードドライブにコピーしたらどうなりますか?すでに存在するファイルは再コピーされません。
もちろん、すべてのファイルをコピーして権限を維持するには、rootにコピーする必要があります。