外付けハードドライブがマウントポイントにマウントされたままになる で問題が発生しました。これはこの質問のトピックではありませんが、背景情報です。
問題はrsyncにあります。不変の宛先に同期しようとしていることを認識していないようです。
ご覧のとおり、このドライブが正しくマウントされていない場合、残っているのはマウントポイントフォルダーだけです。これは私が不変にしたものです。
Rsyncは、このマウントポイントに転送できないことを認識する代わりに、このリモート宛先へのいくつかのギグの転送を続行します。失敗するのではなく、「この宛先には、ここで同期するように指示されたファイルがないため、すべてのファイルを新しい初回転送であるかのように移動する方がよい」かのように状況を確認します。
Rsyncがエラーになることを望みますが、代わりに、このマウントポイントに100,000個のファイルを書き込もうとし、各ファイルで失敗します。
目的地のパスを自由に決めることができるかどうかはわかりませんが、それがあれば、次のトリックを使用できます。
マウントポイントフォルダにディレクトリxyz
を作成し、chmod 000 xyz
を使用して権限を変更します。次に、ドライブをマウントポイントにマウントし、ディレクトリをxyz
にして、アクセス許可を通常のままにします。 rsync
を宛先として/your-mount-point/xyz/
に調整します。ドライブがマウントされていない場合、rsync
はエラーで終了します。
rsync: change_dir#1 "/your-mount-point/xyz/" failed: Permission denied (13)
rsync error: errors selecting input/output files, dirs (code 3) at main.c(562) [Receiver=3.0.9]
rsync: connection unexpectedly closed (9 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(605) [sender=3.0.9]
ドライブがマウントされている場合、rsync
は問題なく動作します。
rsync
は、ドライブがマウントされていないことをどのように認識しますか?マウントポイントは他のフォルダと同じようにフォルダであるため、rsyncは指示どおりに実行します。表示できるディレクトリを指定したため、エラーは発生せず、書き込みを試みます。
回避策は、最初にドライブがマウントされていることを確認し、次にrsync
を実行することです。この例では、外付けハードドライブのラベル(Iomega_HDD)の変更を適宜使用しています。
mount | grep -q Iomega_HDD && rsync ...
上記のコマンドは、ドライブがマウントされている場合にのみrsync
コマンドを実行します。