- PR -

自動バックアップのシェルスクリプト作成

1
投稿者投稿内容
ところてん
会議室デビュー日: 2005/10/15
投稿数: 13
投稿日時: 2005-10-17 01:50
あるディレクトリを毎日自動でバックアップ(圧縮して)を取り、
その圧縮ファイルを他のディレクトリに移動して3日たったら削除するシェルを考えています。
しかし、3日たったら削除する部分のスクリプトが思い浮かばないのですが、よい方法があれば知恵をお貸しください。

#!/bin/sh

tar cf `date +%Y%m%d.tar /aaa
gzip *.tar
mv *.tar.gz /bbb

ここまでしかできてません。/bbbに移動した後、3日後に削除する方法が・・・。
あとは、cronで毎日バックアップを取ろうと思っています。
ところてん
会議室デビュー日: 2005/10/15
投稿数: 13
投稿日時: 2005-10-17 01:59
追記です。

3日後に削除と言っていたのですが、/bbbには3日分のバックアップしか残さないという
考えです。
jk
ベテラン
会議室デビュー日: 2005/08/19
投稿数: 94
投稿日時: 2005-10-17 02:47
#!/bin/sh

TARGETDIR="/usr/local/" # バックアップ対象のディレクトリ
WORKDIR="/aaa/" # いちいちワークに作る意味がわかりません。
BACKUPDIR="/bbb/" # バックアップ格納ディレクトリ

cd $TARGETDIR
TARFILENAME=$WORKDIR`date +%Y%m%d`.tar.gz
tar cf - * | gzip > $TARFILENAME
mv -f $TARFILENAME $BACKUPDIR

for i in `find $BACKUPDIR -name '*.tar.gz' -ctime +3`
do
echo "rm -f $i" #テスト用に表示。OKだったら↓を生かす。
# rm -f $i
done

こんな感じじゃダメですか?

[ メッセージ編集済み 編集者: jk 編集日時 2005-10-17 07:53 ]
yellow
会議室デビュー日: 2005/10/14
投稿数: 2
投稿日時: 2005-10-19 00:26
うろ覚えですが、

find /bbb -ctime +3 -exec rm -f {}\;

とかで行けなかったですかね?

angel
ぬし
会議室デビュー日: 2005/03/17
投稿数: 711
投稿日時: 2005-10-19 00:51
こんばんは。
ちょっと違う方向から。

目的を考えると、シェルスクリプトを組まなくても、logrotate を代わりに活用する手もありそうですね。
※ Linux だとして

tar でアーカイブを作成し、それを logrotate でローテートすることになりますが、両者をバラバラに動かすのは少し気持ちが悪いので、一緒に動かしたいところ…。
logrotate の設定として、postrotate に tar コマンドを書いておくと良いでしょうか。

以上、ご参考まで。

訂正:prerotate よりも postrotate の方が適切に思えるため、訂正しました。

[ メッセージ編集済み 編集者: angel 編集日時 2005-10-19 07:20 ]
angel
ぬし
会議室デビュー日: 2005/03/17
投稿数: 711
投稿日時: 2005-10-19 07:28
おはようございます。

本筋に戻りまして。

 find /bbb -ctime +3 | xargs rm

なんかも良いですね。
厳密にやるなら、

 find /bbb -type f -ctime +3 -print0 | xargs -0 rm

でしょうか…。( Linuxでしか使ったことないですが )
1

スキルアップ/キャリアアップ(JOB@IT)