次のコマンドを使用して、rsyncを使用してホームディレクトリの一部のフォルダをリモートサーバーにバックアップしています。
cd
rsync -Favz --inplace --delete --delete-excluded folder1 folder2 folder3 remote-server:/remote/path/
ローカルでもリモートでも、すべてのファイルは私のユーザーの所有です。
私のユーザーがそのファイルと親ディレクトリの所有者であっても、パターンがr--r--r--であるファイルを除いてうまくいきます。
rsyncがこれらのファイルについて報告する内容は次のとおりです。
rsync: open "/remote/path/somefolder/somefile" failed: Permission denied (13)
...
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1183) [sender=3.1.0]
一時的な解決策としてリモートシステム(同じユーザー)にログインしてファイルを削除し、rsyncを再実行するとこれらのモードでファイルが生成されますが、次にスクリプトを実行すると再び失敗します。
rsyncがリモート側で書き込み不可能なファイルを上書きする方法はありますか(またはそのファイルを削除して再作成します)、または最初にリモートで削除してからバックアップスクリプトを実行する必要がありますか?
この質問は以下に関連しています。0000 権限で /etc/{,g}shadow ファイルをバックアップするには?後者が正しいことと、それについて話すことを除いて読めるファイル、私の質問は読み取ることはできますが書き込めないファイルについてです。
答え1
これはオプションの副作用です--inplace
。これは、ネットワークを介した同期ではなくディスク間の同期に適しています。転送が中断されたときにファイルが一貫しないままになるなど、他の副作用も問題になる可能性があります。--inplace
rsync増分転送アルゴリズムはすでに非常に効率的であるため、同期しないでください。