権限を保持せずにファイルを移動する方法

権限を保持せずにファイルを移動する方法

問題は、ファイルを移動するときにエラーは表示できますが、権限の問題によるエラーは表示できないことです。つまり、ファイルが完全に転送されていないかどうか心配しますが、次のエラーは表示したくありません。

mv: '/home/blah/backup/pgsql.tar.gz' の所有権を保持できません。操作は許可されていません。

だから私は次のようなものが欲しいmv $backupfile $destination --ignore-permissions

バックアップファイルは1MiBから5GiBの間であり、NFS経由で転送されます。

答え1

mvcpもしそうなら、あなたが望む仕事に間違ったツールですrm。ファイルを別のファイルシステムに移動するので、これはファイル権限ビットと所有者/グループ情報を保存しようとするmvことに加えて、後で行われます。同じファイルシステムでファイルを移動し、どちらの場合も同じ方法で実行しようとすると、その情報が保持されるためmvです。ファイル権限ビットと所有者/グループ情報の保存に興味がないため、このツールを使用しないでください。代わりにとを使用してください。mvmvcp --no-preserve=moderm

答え2

同じファイルシステム内でファイルを移動すると、mvファイルは以前の場所から切り離され、権限などのメタデータは変更されずに新しい場所に添付されます。ファイルを別のファイルシステムに移動する場合は、ファイルをコピーしてmvできるだけ多くのメタデータをコピーしてから、元のファイルを削除してください。

他のファイルシステムに移行していて、あまりにも多くのメタデータをコピーしたくないので、ファイルをコピーしてから元のファイルを削除することをお勧めします。

cp "$backupfile" "$destination" && rm "$backupfile"

これにより、ファイルの権限(たとえば、完全な読みやすさ、実行可能性)がある程度保存されます。ファイル変更時間は保存されません。そして牛に似た一種の栄養cp、この--preserve=…オプションを使用すると、コピーされるメタデータをより詳細に制御できます--preserve=mode,timestamps

また、あなたがrsync維持したいものを使用して話すことができます。このオプションは、-arootとしてのみ実行している場合は、所有者を含む「ほとんどのメタデータの保存」を意味します。

rsync -a --no-owner --no-group --remove-source-files "$backupfile" "$destination"

関連情報