質問編集履歴

2

削除された内容の復元を行いました

2019/01/16 09:06

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,3 +1,27 @@
1
+ 下記2点を実装したくここで有識者の方にアドバイスいただき作成しました。
2
+
3
+ ・30日以上前のログは圧縮、同時に別dirへコピー
4
+
5
+ ・1年経過した圧縮logは削除
6
+
7
+ シェルスクリプト以外にも、プログラム系を全く書いた事がなく
8
+
9
+ findで探したものをxargsで引き渡すを理解するのがやっとです。
10
+
11
+ for文とかif文とか、変数代入などの組み合わせが難しいです。
12
+
13
+ crontabに時間指定を入れて動かすため、
14
+
15
+ echoでerrorと表示させるが出来ません。
16
+
17
+ もしも下記スクリプトが途中で止まった場合に、条件分岐させるとかは
18
+
19
+ このベースを崩さず、どこかに入れられるものでしょうか??
20
+
21
+
22
+
23
+ ```
24
+
1
25
  #!/bin/bash
2
26
 
3
27
  # ================================================
@@ -5,3 +29,43 @@
5
29
  # 日々・毎年の日数を変数指定する
6
30
 
7
31
  # ================================================
32
+
33
+ for_daily_check=30
34
+
35
+ daily="+${for_daily_check}"
36
+
37
+ for_years_check=365
38
+
39
+ yearly="+${for_years_check}"
40
+
41
+ # ================================================
42
+
43
+ # logが生成される場所を変数指定する
44
+
45
+ # ================================================
46
+
47
+ target_dir1="/var/log/XX"
48
+
49
+ target_dir2="/var/log/XXX"
50
+
51
+ # ================================================
52
+
53
+ # /var/log配下で、gz拡張子がついてない、作成日時30日以上前のfileを圧縮
54
+
55
+ # ================================================
56
+
57
+ find ${target_dir1} ! -name "*.gz" -mtime ${daily} | xargs -I {} sh -c 'gzip {} && cp {}.gz /var/backup/XX'
58
+
59
+ find ${target_dir2} ! -name "*.gz" -mtime ${daily} | xargs -I {} sh -c 'gzip {} && cp {}.gz /var/backup/XXX'
60
+
61
+ # ================================================
62
+
63
+ # サーバ上に保存されてるgip形式のfileは365日以降は削除する
64
+
65
+ # ================================================
66
+
67
+ find ${target_dir1} -name "*.gz" -type f -mtime ${yearly} | xargs rm -f
68
+
69
+ find ${target_dir2} -name "*.gz" -type f -mtime ${yearly} | xargs rm -f
70
+
71
+ ```

1

修正

2019/01/16 09:06

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,31 +1,3 @@
1
- 下記2点を実装したくここで有識者の方にアドバイスいただき作成しました。
2
-
3
- ・30日以上前のログは圧縮、同時に別dirへコピー
4
-
5
- ・1年経過した圧縮logは削除
6
-
7
-
8
-
9
- シェルスクリプト以外にも、プログラム系を全く書いた事がなく
10
-
11
- findで探したものをxargsで引き渡すを理解するのがやっとです。
12
-
13
- for文とかif文とか、変数代入などの組み合わせが難しいです。
14
-
15
-
16
-
17
- crontabに時間指定を入れて動かすため、
18
-
19
- echoでerrorと表示させるが出来ません。
20
-
21
- もしも下記スクリプトが途中で止まった場合に、条件分岐させるとかは
22
-
23
- このベースを崩さず、どこかに入れられるものでしょうか??
24
-
25
-
26
-
27
- ```
28
-
29
1
  #!/bin/bash
30
2
 
31
3
  # ================================================
@@ -33,53 +5,3 @@
33
5
  # 日々・毎年の日数を変数指定する
34
6
 
35
7
  # ================================================
36
-
37
- for_daily_check=30
38
-
39
- daily="+${for_daily_check}"
40
-
41
-
42
-
43
- for_years_check=365
44
-
45
- yearly="+${for_years_check}"
46
-
47
-
48
-
49
- # ================================================
50
-
51
- # logが生成される場所を変数指定する
52
-
53
- # ================================================
54
-
55
- target_dir1="/var/log/XX"
56
-
57
- target_dir2="/var/log/XXX"
58
-
59
-
60
-
61
- # ================================================
62
-
63
- # /var/log配下で、gz拡張子がついてない、作成日時30日以上前のfileを圧縮
64
-
65
- # ================================================
66
-
67
-
68
-
69
- find ${target_dir1} ! -name "*.gz" -mtime ${daily} | xargs -I {} sh -c 'gzip {} && cp {}.gz /var/backup/XX'
70
-
71
- find ${target_dir2} ! -name "*.gz" -mtime ${daily} | xargs -I {} sh -c 'gzip {} && cp {}.gz /var/backup/XXX'
72
-
73
-
74
-
75
- # ================================================
76
-
77
- # サーバ上に保存されてるgip形式のfileは365日以降は削除する
78
-
79
- # ================================================
80
-
81
- find ${target_dir1} -name "*.gz" -type f -mtime ${yearly} | xargs rm -f
82
-
83
- find ${target_dir2} -name "*.gz" -type f -mtime ${yearly} | xargs rm -f
84
-
85
- ```