- - PR -
自動バックアップのシェルスクリプト作成
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 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-17 01:59
追記です。
3日後に削除と言っていたのですが、/bbbには3日分のバックアップしか残さないという 考えです。 |
|
投稿日時: 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 ] |
|
投稿日時: 2005-10-19 00:26
うろ覚えですが、
find /bbb -ctime +3 -exec rm -f {}\; とかで行けなかったですかね? |
|
投稿日時: 2005-10-19 00:51
こんばんは。
ちょっと違う方向から。 目的を考えると、シェルスクリプトを組まなくても、logrotate を代わりに活用する手もありそうですね。 ※ Linux だとして tar でアーカイブを作成し、それを logrotate でローテートすることになりますが、両者をバラバラに動かすのは少し気持ちが悪いので、一緒に動かしたいところ…。 logrotate の設定として、postrotate に tar コマンドを書いておくと良いでしょうか。 以上、ご参考まで。 訂正:prerotate よりも postrotate の方が適切に思えるため、訂正しました。 [ メッセージ編集済み 編集者: angel 編集日時 2005-10-19 07:20 ] |
|
投稿日時: 2005-10-19 07:28
おはようございます。
本筋に戻りまして。 find /bbb -ctime +3 | xargs rm なんかも良いですね。 厳密にやるなら、 find /bbb -type f -ctime +3 -print0 | xargs -0 rm でしょうか…。( Linuxでしか使ったことないですが ) |
1