
/etc/crontabで以下のbackup.shを毎晩実行するのですが、
3日以前のものは毎回消していく場合は以下のような、
少し初心者的な書き方しか現在分からないのですが、
他にもし良い書き方があれば、教えていただけますでしょうか?
よろしくお願いします。
#!/bin/sh
DATE_1=`date -d '1 day ago' +%Y%m%d`
DATE_2=`date -d '2 days ago' +%Y%m%d`
DATE_3=`date -d '3 days ago' +%Y%m%d`
if [ test_$DATE_2.tar.gz ]; then
mv -f test_$DATE_2.tar.gz test_$DATE_3.tar.gz
fi
rm -f test_$DATE_3.tar.gz
if [ test_$DATE_1.tar.gz ]; then
mv -f test_$DATE_1.tar.gz test_$DATE_2.tar.gz
fi
if [ test.tar.gz ]; then
mv -f test.tar.gz test_$DATE_1.tar.gz
fi
tar zcvf test.tar.gz /usr/local/test
No.1ベストアンサー
- 回答日時:
えーとまず、
if [ test_$DATE_2.tar.gz ];
等は常に真です。おそらくは、その名前のファイルが存在するかどうか調べたいと思うので、その場合は、
if [ -f test_$DATE_2.tar.gz ];
です。
それにしても意味不明のスクリプトです。本当にこれでやりたいことになっていますか?日本語に直して読んでみてください。
普通のやり方は2通りあって、
案1:ファイルに連番をつけて3世代残す
(1)ファイル3があれば消す
(2)ファイル2があればファイル3にリネーム
(3)ファイル1があればファイル2にリネーム
(4)ファイルがあればファイル1にリネーム
(5)ファイルを作成
test -f test_3.tar.gz && rm test_3.tar.gz
test -f test_2.tar.gz && mv test_2.tar.gz test_3.tar.gz
test -f test_1.tar.gz && mv test_1.tar.gz test_2.tar.gz
test -f test.tar.gz && mv test.tar.gz test_1.tar.gz
tar zcvf test.tar.gz /usrl/local/test
案2:タイムスタンプが古いものを消す
(1)タイムスタンプが4日以上のものを消す
(2)日付入りのファイルを作る
find -name 'test_*.tar.gz' -mtime +3 | xargs -r rm
tar zcvf test_`date +%Y%m%d`.tar.gz /usr/local/test
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- UNIX・Linux cronの@rebootでのdateコマンドの実行につきまして 2 2023/06/11 16:23
- Visual Basic(VBA) Excel VBA でデータ転記について 1 2023/03/07 19:11
- その他(プログラミング・Web制作) python 気象データの取得 2 2023/06/20 23:54
- C言語・C++・C# 質問です 下記のコードを分かりやすく解説お願いします 初心者です #include ‹stdio.h 3 2022/05/26 22:03
- 英語 to date 2 2023/05/23 23:22
- Android tar.ファイルのインストールについて知りたいです 2 2022/07/23 15:34
- Visual Basic(VBA) データベースから絞り込んでデータを読み込み 1 2023/02/21 19:51
- Visual Basic(VBA) swiftで年号を 1 2023/02/05 06:48
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- その他(プログラミング・Web制作) pythonのpandasのcsvの外部結合(outer_join)した際に列が想定とは異なる事象 1 2022/05/25 13:23
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Dirコマンドでフォルダ内ファイ...
-
ラズパイで『’test.service’をs...
-
ファイル名についている「-」と...
-
テキストファイルから最終行の抽出
-
SFTPからのmput、mgetエラー
-
ファイル名一覧の印刷
-
ファイル名の -(ハイフン)を _(...
-
数字を複数回繰り返す正規表現...
-
作成日時でのファイル検索
-
DOSコマンドのFOR文で空白を含...
-
Windows上にて、コマンドでunco...
-
FTP接続時の文字化け(CentOS6.5)
-
Cygwinのコマンドラインから.ba...
-
rsyncのPermission denied
-
DUとLSの表示の差
-
md5sum途中で止まったように見える
-
ピクチャクリッピングのファイ...
-
特定の更新日付のファイルのみ...
-
エクスプローラーはデータを書...
-
cpコマンドで強制的に上書きし...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Dirコマンドでフォルダ内ファイ...
-
ファイル名についている「-」と...
-
ラズパイで『’test.service’をs...
-
テキストファイルから最終行の抽出
-
batファイルの強制終了を回避し...
-
ファイル名の -(ハイフン)を _(...
-
ファイル名一覧の印刷
-
DOSのコマンドで、隠しファイル...
-
~以外を削除する場合(rmコマ...
-
数字を複数回繰り返す正規表現...
-
DOSコマンドのFOR文で空白を含...
-
DOS コマンドの~zfの意味を教え...
-
oracleの文字コードとlinuxサー...
-
lsでは一画面ずつ表示できませ...
-
バッチファイルでのzip形式フォ...
-
xcopyのエラー情報のはき...
-
ftpコマンドで丸ごとダウン...
-
エクスプローラーはデータを書...
-
処理結果(標準出力と標準エラー...
-
Windows上にて、コマンドでunco...
おすすめ情報