1

最初の投稿。背景 - 私の妻は写真家です。彼女はたくさんの写真を撮り、編集中にドライブ (mnt/STStorage) に保存しますが、後でクリーンアップすることはありません。変更日 (/mnt/LTStorage) に基づいてフォルダーを移動したいドライブがあります。cron ジョブに追加して 1 日 1 回実行できるスクリプトについて助けが必要です 30 1 * * * スクリプトを..

  1. /mnt/STStorage/ ルート フォルダの最終変更日を確認し、14 日以上経過している場合は、そのフォルダとその中のすべてを /mnt/LTStorage/ に移動しますが、同じフォルダ名を維持します。
  2. 次に、移動したものを /mnt/STStorage/ に書き込んで、移動したものを把握し、移動したフォルダーのログをメールで送信してください。

OS CentOS 6.4

これが私が持っているものです。これは今のところうまくいくと思います。よりきれいになる可能性があります。

#/bin/bash
dt=$(date +%Y.%m.%d) 
From="/mnt/STStorage/"
To="/mnt/LTStorage/"

if [[ ! -d "$To" ]]; then
mkdir -p "$To"
fi

cd "$From"
for i in "$@"; do
find . -type d -mtime +14 -exec mv "{}" "$To" \; > "$From"/Moved."$dt".txt

uuencode "$From"/Moved."$dt".txt "$From"/Moved."$dt".txt | mail -s "Files Moved"
me@me.com
done

次に、これを crontab に追加して、1 日 1 回実行します。

4

1 に答える 1

1

-execと併用できますfind。何かのようなもの:

find /mnt/STStorage/ -type d -mtime +14 -exec mv {} /mnt/LTStorage/ \;
  • -type dディレクトリのみが移動されるようにします。

別のオプションは、使用することですxargs

 find /mnt/STStorage/ -type d -mtime +14 | xargs -I '{}' mv {} /mnt/LTStorage/

アップデート:

移動中のものを追加するには、次のverboseモード オプションを設定します。mv

find /mnt/STStorage/ -type d -mtime +14 -exec mv -v {} /mnt/LTStorage/ \;

これにより、すべてが標準出力に出力されるためです。ログ ファイルにリダイレクトできます。

find /mnt/STStorage/ -type d -mtime +14 -exec mv {} /mnt/LTStorage/ \; > /mnt/STStorage/log.file

メールを送信するには、次のようなことができます-

uuencode /mnt/STStorage/log.file /mnt/STStorage/log.file | mail -s "this is my subject line" chip@email.com
于 2013-06-11T16:01:43.550 に答える