問題は、ファイルを移動するときにエラーは表示できますが、権限の問題によるエラーは表示できないことです。つまり、ファイルが完全に転送されていないかどうか心配しますが、次のエラーは表示したくありません。
mv: '/home/blah/backup/pgsql.tar.gz' の所有権を保持できません。操作は許可されていません。
だから私は次のようなものが欲しいmv $backupfile $destination --ignore-permissions
:
バックアップファイルは1MiBから5GiBの間であり、NFS経由で転送されます。
答え1
mv
cp
もしそうなら、あなたが望む仕事に間違ったツールですrm
。ファイルを別のファイルシステムに移動するので、これはファイル権限ビットと所有者/グループ情報を保存しようとするmv
ことに加えて、後で行われます。同じファイルシステムでファイルを移動し、どちらの場合も同じ方法で実行しようとすると、その情報が保持されるためmv
です。ファイル権限ビットと所有者/グループ情報の保存に興味がないため、このツールを使用しないでください。代わりにとを使用してください。mv
mv
cp --no-preserve=mode
rm
答え2
同じファイルシステム内でファイルを移動すると、mv
ファイルは以前の場所から切り離され、権限などのメタデータは変更されずに新しい場所に添付されます。ファイルを別のファイルシステムに移動する場合は、ファイルをコピーしてmv
できるだけ多くのメタデータをコピーしてから、元のファイルを削除してください。
他のファイルシステムに移行していて、あまりにも多くのメタデータをコピーしたくないので、ファイルをコピーしてから元のファイルを削除することをお勧めします。
cp "$backupfile" "$destination" && rm "$backupfile"
これにより、ファイルの権限(たとえば、完全な読みやすさ、実行可能性)がある程度保存されます。ファイル変更時間は保存されません。そして牛に似た一種の栄養cp
、この--preserve=…
オプションを使用すると、コピーされるメタデータをより詳細に制御できます--preserve=mode,timestamps
。
また、あなたがrsync
維持したいものを使用して話すことができます。このオプションは、-a
rootとしてのみ実行している場合は、所有者を含む「ほとんどのメタデータの保存」を意味します。
rsync -a --no-owner --no-group --remove-source-files "$backupfile" "$destination"