rsyncが正しいターゲットディレクトリを選択できません

rsyncが正しいターゲットディレクトリを選択できません

webcam.jpg呼び出されたファイルを日付でエンコードされたサブディレクトリにコピーすることも処理できる短いシェルスクリプトを作成しようとしています。ディレクトリがまだ存在しない場合は、自動的にディレクトリを作成するため、rsyncを使用します。

以下を使用すると、すべてがうまく機能します。

rsync -a webcam.jpg ./$(date +%Y-%m-%d)/$(date +%Y-%m-%d_%H-%M).jpg

しかし、ディレクトリに深く入ると、rsyncでエラーが発生し始めますが、その理由は実際にはわかりません。私は次のように入力しています:

rsync -a webcam.jpg ./saved_images/$(date +%Y-%m-%d)/$(date +%Y-%m-%d_%H-%M).jpg

私の結果は次のとおりです

rsync: change_dir#3 "/var/www/tmp/test//./saved_images/2013-07-07" failed: No such file or directory (2)
rsync error: errors selecting input/output files, dirs (code 3) at main.c(677) [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]

test//./saved_images最初の行に関連するエラーが表示されますが、最初にrsyncがこのディレクトリにアクセスしようとしたのはなぜですか?質問がありますかtest/saved_images/

ベストアンサー1

良い/var/www/tmp/test//./saved_images/2013-07-07と同じです/var/www/tmp/test/saved_images/2013-07-07

Double は/無視されます。入力でき、ls ////と同じですls /

ポイントは.それがあるディレクトリと同じです。 soは、ディレクトリを指すのとls /.同じ出力を表示します。ls //var/www/tmp/test/./var/www/tmp/test/

したがってrsync、あなたの場合は、そのディレクトリがある現在のディレクトリを取得してくださいvar/www/tmp/test/(少なくともパスがaで始まる場合.)。次に、追加のエントリを追加して、そのパス/に確実に追加されたエンディングがあることを確認します/。最後のステップでは、ここに提供した部分を追加します。./saved_images/$(date +%Y-%m-%d)/$(date +%Y-%m-%d_%H-%M).jpg

表示されるエラーは、ディレクトリが/var/www/tmp/test/saved_images/存在せず、ディレクトリrsyncのみが作成されるため生成されないことです。rsync

編集する

おそらく問題のためにスクリプトを使用する必要があります。

today_dir=$(date +%Y-%m-%d)
mkdir -p ./$today_dir/
cp webcam.jpg ./$today_dir/$(date +%Y-%m-%d_%H-%M).jpg

おすすめ記事