ディレクトリツリー構造を維持しながら、2日より古いいくつかの大容量ファイルを定期的にNASに保存する必要があります。これらのファイルは7日間ソースディレクトリに残ります。
最初に私達はfind
これのために次を使用しました:
find ${SOURCE_DIR} -type f -mtime +2 -exec ksh -c 'mkdir -p $(dirname ${DEST_NAS_DIR}$0) && cp -p $0 ${DEST_NAS_DIR}$0' {} \;
しかし、私たちはスクリプトがすでにアーカイブされているファイルをコピーしており、各実行に時間がかかりすぎることがわかりました。
cp には -n/--no-clobber オプションはありません。それでは、ターゲットが同じファイルを上書きするのをどのように防ぐことができますか?どんなアイデアがありますか?
あいさつ!
答え1
rsync
システムで使用可能な場合は、対応する--ignore-existing
フラグを使用できます。
find ${SOURCE_DIR} -type f -mtime +2 \
-exec rsync --ignore-existing '{}' ${DEST_NAS_DIR} \;
おそらくこの-u
フラグは興味深いかもしれません。送信者が既存のファイルの更新バージョンも持っていることを確認し、その場合は更新します。
--archive
スキーマを有効にすることを確認してください。これは、時間、所有権などに関するいくつかの情報を繰り返して維持することを意味します。詳細を見るman rsync
。
答え2
次の方法を使用して不正行為を試すことができます。
...yes n|cp -i -p $0 ${DEST_NAS_DIR}$0' {}...
残念ながら、これをテストするAIXはありませんが、これを行うには既存のファイルを上書きする必要があり、 'n'を送信することでこれを防ぐことができます。
PS現在はテストしてみるところがありませんので、実際のファイルを使用する前にテストしてください。