AIXでcpでファイルを上書きするのを防ぐ方法は?

AIXでcpでファイルを上書きするのを防ぐ方法は?

ディレクトリツリー構造を維持しながら、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

おすすめ記事