8

外付けハードドライブへのバックアップを実行するこのbashスクリプトがあります...そのドライブがマウントされている場合のみ(OS X):

DIR=/Volumes/External; 
if [ -e $DIR ]; 
then rsync -av ~/dir_to_backup $DIR; 
else echo "$DIR does not exist"; 
fi

これは機能しますが、rsync のマニュアル ページを読み間違えているように感じます。最上位の宛先ディレクトリが存在しない場合に実行を中止する組み込みの rsync オプションはありますか? /Volumes/External の存在をテストせずに、ディレクトリがまだマウントされていない場合は、その名前でディレクトリが作成されます。

4

3 に答える 3

4

これらの 2 つのフラグは、探しているもののように見えます。

--existing, --ignore-non-existing

マニュアルページから:

--existing, --ignore-non-existing
これは、宛先にまだ存在しないファイル (ディレクトリを含む) の作成をスキップするように rsync に指示します。このオプションを --ignore-existing オプションと組み合わせると、ファイルは更新されません (不要なファイルを削除するだけの場合に便利です)。

于 2009-01-04T14:58:54.790 に答える
4

私の知る限り、いいえ、しかし末尾のスラッシュで動作をシミュレートできます:

rsync -av dir_to_backup /Volumes/External/;

ディレクトリが存在しない場合は、エラーで終了します (これは必要な場合とそうでない場合があります)。

また、いつでも if を最適化できます。

test -e $DIR && rsync -av ...

于 2009-01-04T15:00:56.067 に答える
1

いいえ、マンページから見る限り、そのようなオプションはないようです。

于 2009-01-04T15:03:40.787 に答える