ファイルの所有権を維持しながら、ウェブサイトを私のホームフォルダにバックアップしました。
rsync -az [email protected]:/www/site ~/backup
私が理解するなら、-aオプションは-rlptgoDと同じです。ここで、-oと-gは所有者とグループを保持します。正しいですか?
バックアップするファイルはすべてadmin(共有ホスティング)ではなくuser:userに設定されています。
コマンドを実行すると、ローカルコンピュータのすべてのファイルが自分のローカルユーザー:グループになるように変更されます。
基本的な質問は、ファイルの元の所有権を維持する方法です。それとも私が間違った方法で近づいているのでしょうか?そして、ファイルの重量を測定して転送する必要がありますか?
答え1
すでにファイルを所有している場合、またはルートでない場合は、ファイルの所有権とグループを維持することはできません。 (これはファイルが「リーク」できないという原則と一致します。)この--fake-super
フラグを使用すると、拡張属性に所有権とグループを書き込むことができるため、十分な権限で復元する場合は、以前に保存した値を復元できます。
# Backup
rsync -az --fake-super [email protected]:/www/site ~/backup
# Restore
rsync -az --fake-super ~/backup [email protected]:/www/site
リモートシステムにrootとしてログインできないがsudo
パスワードを入力せずに実行できる場合は、コマンドラインを次のように変更できます。
# Restore via sudo
rsync -az --fake-super --rsync-path='sudo rsync' ~/backup [email protected]:/www/site
この--fake-super
フラグは、ターゲットシステムに存在しないユーザーとグループ名に関する問題も回避します(--numeric-ids
使用しないことを決定した場合のオプションです--fake-super
)。実際にバックグラウンドで実行されていることに気づくまで、ターゲットシステムでは少し奇妙に見えます。たとえば、バックアップされると、シンボリックリンクはシンボリックリンクではなくなります。
1つの潜在的な問題は、rsync
UID / GIDの代わりに名前で所有者とグループの情報をコピーすることを好むことです。ターゲットシステムにこれらの名前がないと、問題が発生する可能性があります。幸い、この--numeric-ids
フラグを使用すると、rsync
名前ではなくUID / GIDにコピーできます。