こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

rsyncの差分フォルダを定期的削(Linux

rsyncで作った差分フォルダを定期的削除するには、どうしたらよいでしょうか?

いまのところ、1時間毎バックアップしているので、
backup_20190610-00 こういう名前のフォルダができます。
backup_年月日-時 です。

1ヶ月以上古いものは、削除したいのですが、findで1ヶ月以上前に作られたフォルダを削除する・・・、とかはスマートではないものの、簡単だと思っています。
みなさんは、どうしますか?

Linuxのubuntu、Bashです。

投稿日時 - 2019-06-10 00:24:30

QNo.9624457

暇なときに回答ください

質問者が選んだベストアンサー

> findで1ヶ月以上前に作られたフォルダを削除する

が普通です。

投稿日時 - 2019-06-10 02:26:08

お礼

これが一番普通ですかね。
ありがとうございます。

投稿日時 - 2019-06-14 20:38:20

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(5)

ANo.5

再度補足を見ました

勘違いをしてる?ことに関しての回答です
質問内容(定期的削除)からcronを利用したことがないのかな?と思っての回答です
cronですのでスクリプトとなりますね
質問文にはこれらの文言がないので、これらの事を教えたわけです
このヒントがあれば自動的に削除出来るものを作れます
知らないと自動的には無理ですからね

最初の文章、最後の文章に対する回答として「cronでスクリプト」となりました

どうしたらよいでしょうか?どうしますか?に対してスクリプトを書いて欲しいとまでは読めませんでした

投稿日時 - 2019-06-11 05:27:48

お礼

なるほど、「rsyncは知っているが、cronは知らないだろう。」と、考えたわけですね。
確かにそう考えれば、そうも考えられますね。
全体での推定をするか、部分での推定を強くするかの違いですかね。

答えいにくい余談に、回答ありがとうございます。

投稿日時 - 2019-06-14 20:35:28

ANo.4

バックアップディレクトリ内を後から触る(更新・削除)こともあり、その場合
ディレクトリのタイムスタンプが更新されるので findだと削除漏れすることもあるとか

findの深さ指定のミスで、昨日のバックアップなのに更新のない子ディレクトリを誤って消してしまうのが怖い

ってことなら、

rmtarget=`date '+backup_%Y%m%d' --date "31 day ago"`
で 今日から31日前の "backup_20190511"という文字列を作っておいて
"-時"のところは、どうせ全部削除対象になるのでワイルドカードにして
rm -fr $rmtarget-*
とすれば、よさそさそうですけど。

投稿日時 - 2019-06-11 03:10:50

お礼

結局、試行錯誤した結果。
年月のフォルダの中に、時間を作り、いろいろとしました。
皆さんに回答は参考にしました。
ありがとうございます。

投稿日時 - 2019-06-14 20:37:04

ANo.3

補足を見ました

対象のフォルダを消すスクリプトでよいのでは?
補足の意味がよくわかりませんでした

スクリプトの記述方法を教えてほしいという意味でしょうか

投稿日時 - 2019-06-10 21:39:50

補足

ああ、なるほど。
どう質問を読んでいたのか?が、わからないのですが、問題点はわかりました。
ちょっと、質問からそれて、あなたの思考の方に興味がありますので、その点を中心に、回答お願いできるでしょうか?


私の質問を、まとめるとこうです。

/////////
rsyncで(作ったスクリプト)で、差分フォルダ(backup_20190610-00(backup_年月日-時))を定期的削除するには、どうしたらよいでしょうか?
「古いものは削除したい」場合、みなさんは、どうしますか?
/////////

というものです。

Linuxでrsyncを使う以上スクリプトです。
そして、それに続く、「古いものは削除したい」はスクリプトと考えるはずです。
手作業で消せるのなら、小学生だって、手作業で消していますから、手作業で消すという質問は、自然となくなるはずです。
「手作業で消すにはどうしたら良いですか?」とは、普通は聞きませんから。

また、「スクリプトを作ったことがある人なら、rsyncで(作ったスクリプト)の中に過去のバックアップの削除を組み込みたいんだろうなー」、という想像は、難しくないはずです。


ので、あなたの
>「shellスクリプトを書いてcronで定期実行じゃダメ?」
が、質問の意図を根本的に読み間違えているのかな?と考えたわけです。
で、質問とは別に、なぜ、根本的に読み違えたのか?を知りたかったのです。

で、再度の回答で
>「スクリプトの記述方法を教えてほしいという意味でしょうか」

と、私からすれば、「当たり前にスクリプトでしょ」、という前提が伝わっていなかったことはわかりました。
確かに、「削除するスクリプトはどう書きますか?」とは、書いていません。
しかし、しかし想像きる範囲だと思うのですが・・・?
というか、それ以外の選択肢が私には想像できません。

「なぜ、伝わらなかったのか?」を知りたいのですが、なにか心当たりはあるでしょうか?

念のためにこれは賛否ではなく、質問の意図の読み取り方のプロセスが、私とは根本的には違うと思うのですが、それを知りたいのです。

ぶしつけて、自覚しにくい部分だと思うのですが、よろしくお願いします。
とても興味あります。

投稿日時 - 2019-06-10 22:18:54

お礼

なるほどです。
ありがとうございます。

投稿日時 - 2019-06-14 20:37:41

ANo.2

shellスクリプトを書いてcronで定期実行じゃダメ?

投稿日時 - 2019-06-10 07:18:04

補足

>shellスクリプトを書いてcronで定期実行じゃダメ?

どういうスクリプトを書いて、どう過去のフォルダを消していきます?
差分のフォルダ名自体は、時間がわかれば任意でかまいません。

のと、「もし勘違いで回答しちゃったよ!」というのなら、どういう状況で、その勘違いが起きたと思いますか?

投稿日時 - 2019-06-10 20:03:56

お礼

なるほどです。
ありがとうございます。

投稿日時 - 2019-06-14 20:37:58

あなたにオススメの質問