前言 find 作为最基础的 bash shell 命令之一我就不多做介绍了,由于每月压缩后的日志增长量已经超过 20TB,和 PB 相比应该还不算很大,选择的日志归档同步方案是 Facebook Scribe ,之后或许会基于ELK 或Grafana Loki 搭建日志实时分析平台,不过眼下的问题还是想办法在没有商业化集中式存储和软件定义分布式存储的支持下,用比较简单粗暴的方法苦苦支撑,本文分享了一些简单的小技巧方便回顾和二次利用。
更新历史 2019 年 07 月 29 日 - 初稿
阅读原文 - https://liaojiaxin158.github.io/post/find/
扩展阅读
find
find find - search for files in a directory hierarchy
https://linux.die.net/man/1/find
find 命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则 find 命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
https://man.linuxde.net/find
How to use
log archive
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root 15 3 * * * root bash /opt/sa_scripts/archive_from_date/one_run_2d.sh
log backup and cleanup
1 2 3 4 5 6 cd /data/scripts./check_original_log.sh 2019-05 ./move_backup.sh 2019-05 ./check_backup_log.sh 2019-05 nohup sh rsync_backup_10-71-12-61.sh > log /2019-04.rsync.out 2>&1 & nohup sh rsync_backup_10-71-14-132.sh > log /2019-05.rsync.out 2>&1 &
log archive
archive_from_date.sh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 #!/bin/bash if [ "$# " -lt 2 ]then echo "Usage: $0 path archive_days [trailing_digit]" exit 1 fi FILE_PATH=$1 ARCHIVE_DAYS=$2 TRAILING_DIGIT=$3 if [ -z "${TRAILING_DIGIT//} " ]then TRAILING_DIGIT=6 fi start_date="2017-01-01" end_date=`date` end_date=`date -d -${ARCHIVE_DAYS} days +%Y-%m-%d` echo "Scanning from $start_date to $end_date (not inclusive)" echo "==================================" if [[ "$end_date " < "$start_date " ]]then echo "Invalid end date: $end_date ,it should be later than start date: ${start_date} . Exit..." exit 1 fi RESULT_PATH=/tmp/log_archive if [ ! -d "$RESULT_PATH " ]then mkdir -p $RESULT_PATH fi cd $FILE_PATH while [ "$start_date " != "$end_date " ]do if ls *${start_date} *[0-9] 1>/dev/null 2>&1 then echo "Compressing: $start_date " first_file=`ls *${start_date} *[0-9]|head -1` file_name=${first_file%_*} tar cvzf ${file_name} .tgz ${file_name} *[0-9] tar_size=`ls -l ${file_name} .tgz|awk '{print $5}' ` if (( $tar_size > 0 )) then echo "Done.Deleting origin." rm ${file_name} *[0-9] else echo "tar file size is ZERO!" echo "`pwd`: $file_name " >>$RESULT_PATH fi fi start_date=$(date -I -d "$start_date +1day" ) done
archive_from_day.sh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 #!/bin/bash FILE_PATH=$1 ARCHIVE_DAYS=$2 start_date=$ARCHIVE_DAYS end_date=$ARCHIVE_DAYS echo "Scanning from $start_date to $end_date (not inclusive)" echo "==================================" RESULT_PATH=/tmp/log_archive if [ ! -d "$RESULT_PATH " ]then mkdir -p $RESULT_PATH fi cd $FILE_PATH if ls *${start_date} *[0-9] 1>/dev/null 2>&1then echo "Compressing: $start_date " first_file=`ls *${start_date} *[0-9]|head -1` file_name=${first_file%_*} tar cvzf ${file_name} .tgz ${file_name} *[0-9] tar_size=`ls -l ${file_name} .tgz|awk '{print $5}' ` if (( $tar_size > 0 )) then echo "Done.Deleting origin." rm ${file_name} *[0-9] else echo "tar file size is ZERO!" echo "`pwd`: $file_name " >>$RESULT_PATH fi fi
run.sh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 #!/bin/bash PARENT_PATH=$1 ARCHIVE_DAY=$2 if [ "$# " -ne 2 ]then echo "Usage: $0 parent_path archive_day" exit 1 fi for folder in $(find $PARENT_PATH -type d -links 2)do echo "processing:${folder} ..." ./archive_from_date.sh $folder $ARCHIVE_DAY done
one_run_2d.sh
1 2 3 4 5 #!/bin/bash end_date=`date -d -2days +%Y-%m-%d` nohup bash /opt/sa_scripts/archive_from_date/one_run.sh /data/gop/live/primary/gop $end_date > /opt/sa_scripts/archive_from_date/logs/$end_date .log 2>&1 &
one_run.sh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 #!/bin/bash PARENT_PATH=$1 ARCHIVE_DAY=$2 if [ "$# " -ne 2 ]then echo "Usage: $0 parent_path archive_day" exit 1 fi for folder in $(find $PARENT_PATH -type d -links 2)do echo "processing:${folder} ..." /opt/sa_scripts/archive_from_date/day.sh $folder $ARCHIVE_DAY done
log example
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 total 2197444 -rw-r--r-- 1 root root 35386495 Jun 3 21:20 gop-live-point_txn_aggregator-data-2019-06-01.tgz -rw-r--r-- 1 root root 33273034 Jun 4 20:37 gop-live-point_txn_aggregator-data-2019-06-02.tgz -rw-r--r-- 1 root root 33390884 Jun 5 20:23 gop-live-point_txn_aggregator-data-2019-06-03.tgz -rw-r--r-- 1 root root 35553038 Jun 6 20:18 gop-live-point_txn_aggregator-data-2019-06-04.tgz -rw-r--r-- 1 root root 35081679 Jun 7 19:16 gop-live-point_txn_aggregator-data-2019-06-05.tgz -rw-r--r-- 1 root root 35397705 Jun 8 19:17 gop-live-point_txn_aggregator-data-2019-06-06.tgz -rw-r--r-- 1 root root 36039754 Jun 9 18:55 gop-live-point_txn_aggregator-data-2019-06-07.tgz -rw-r--r-- 1 root root 38596404 Jun 10 20:22 gop-live-point_txn_aggregator-data-2019-06-08.tgz -rw-r--r-- 1 root root 38048982 Jun 11 20:26 gop-live-point_txn_aggregator-data-2019-06-09.tgz -rw-r--r-- 1 root root 33026017 Jun 12 19:16 gop-live-point_txn_aggregator-data-2019-06-10.tgz -rw-r--r-- 1 root root 29198108 Jun 13 19:56 gop-live-point_txn_aggregator-data-2019-06-11.tgz -rw-r--r-- 1 root root 25771109 Jun 14 19:19 gop-live-point_txn_aggregator-data-2019-06-12.tgz -rw-r--r-- 1 root root 26092930 Jun 15 19:09 gop-live-point_txn_aggregator-data-2019-06-13.tgz -rw-r--r-- 1 root root 35349519 Jun 16 19:13 gop-live-point_txn_aggregator-data-2019-06-14.tgz -rw-r--r-- 1 root root 31780817 Jun 17 21:27 gop-live-point_txn_aggregator-data-2019-06-15.tgz -rw-r--r-- 1 root root 36549729 Jun 18 21:57 gop-live-point_txn_aggregator-data-2019-06-16.tgz -rw-r--r-- 1 root root 26007332 Jun 19 19:58 gop-live-point_txn_aggregator-data-2019-06-17.tgz -rw-r--r-- 1 root root 25114440 Jun 20 19:20 gop-live-point_txn_aggregator-data-2019-06-18.tgz -rw-r--r-- 1 root root 22494565 Jun 21 19:25 gop-live-point_txn_aggregator-data-2019-06-19.tgz -rw-r--r-- 1 root root 25132986 Jun 22 19:19 gop-live-point_txn_aggregator-data-2019-06-20.tgz -rw-r--r-- 1 root root 30698833 Jun 23 20:08 gop-live-point_txn_aggregator-data-2019-06-21.tgz -rw-r--r-- 1 root root 38639032 Jun 24 21:12 gop-live-point_txn_aggregator-data-2019-06-22.tgz -rw-r--r-- 1 root root 31422932 Jun 25 21:27 gop-live-point_txn_aggregator-data-2019-06-23.tgz -rw-r--r-- 1 root root 25262186 Jun 26 19:57 gop-live-point_txn_aggregator-data-2019-06-24.tgz -rw-r--r-- 1 root root 25402079 Jun 27 19:30 gop-live-point_txn_aggregator-data-2019-06-25.tgz -rw-r--r-- 1 root root 22227072 Jun 28 17:09 gop-live-point_txn_aggregator-data-2019-06-26.tgz -rw-r--r-- 1 root root 26174268 Jun 29 19:59 gop-live-point_txn_aggregator-data-2019-06-27.tgz -rw-r--r-- 1 root root 27484303 Jun 30 20:43 gop-live-point_txn_aggregator-data-2019-06-28.tgz -rw-r--r-- 1 root root 25607704 Jul 1 21:37 gop-live-point_txn_aggregator-data-2019-06-29.tgz -rw-r--r-- 1 root root 23545276 Jul 2 21:34 gop-live-point_txn_aggregator-data-2019-06-30.tgz -rw-r--r-- 1 root root 28956480 Jul 3 21:03 gop-live-point_txn_aggregator-data-2019-07-01.tgz -rw-r--r-- 1 root root 27250475 Jul 4 20:21 gop-live-point_txn_aggregator-data-2019-07-02.tgz -rw-r--r-- 1 root root 26443417 Jul 5 20:56 gop-live-point_txn_aggregator-data-2019-07-03.tgz -rw-r--r-- 1 root root 23445274 Jul 6 20:28 gop-live-point_txn_aggregator-data-2019-07-04.tgz -rw-r--r-- 1 root root 35914567 Jul 7 21:01 gop-live-point_txn_aggregator-data-2019-07-05.tgz -rw-r--r-- 1 root root 42759699 Jul 8 21:46 gop-live-point_txn_aggregator-data-2019-07-06.tgz -rw-r--r-- 1 root root 41146298 Jul 9 23:28 gop-live-point_txn_aggregator-data-2019-07-07.tgz -rw-r--r-- 1 root root 30890861 Jul 10 21:50 gop-live-point_txn_aggregator-data-2019-07-08.tgz -rw-r--r-- 1 root root 29505781 Jul 11 22:16 gop-live-point_txn_aggregator-data-2019-07-09.tgz -rw-r--r-- 1 root root 25130694 Jul 12 21:04 gop-live-point_txn_aggregator-data-2019-07-10.tgz -rw-r--r-- 1 root root 30355468 Jul 13 21:44 gop-live-point_txn_aggregator-data-2019-07-11.tgz -rw-r--r-- 1 root root 32142222 Jul 14 22:47 gop-live-point_txn_aggregator-data-2019-07-12.tgz -rw-r--r-- 1 root root 30846192 Jul 15 22:54 gop-live-point_txn_aggregator-data-2019-07-13.tgz -rw-r--r-- 1 root root 32435568 Jul 17 00:21 gop-live-point_txn_aggregator-data-2019-07-14.tgz -rw-r--r-- 1 root root 24601862 Jul 17 23:54 gop-live-point_txn_aggregator-data-2019-07-15.tgz -rw-r--r-- 1 root root 26708856 Jul 19 00:54 gop-live-point_txn_aggregator-data-2019-07-16.tgz -rw-r--r-- 1 root root 21915660 Jul 19 23:23 gop-live-point_txn_aggregator-data-2019-07-17.tgz -rw-r--r-- 1 root root 19324816 Jul 21 00:01 gop-live-point_txn_aggregator-data-2019-07-18.tgz -rw-r--r-- 1 root root 29234368 Jul 22 00:47 gop-live-point_txn_aggregator-data-2019-07-19.tgz -rw-r--r-- 1 root root 32138171 Jul 23 02:44 gop-live-point_txn_aggregator-data-2019-07-20.tgz -rw-r--r-- 1 root root 31359175 Jul 24 04:05 gop-live-point_txn_aggregator-data-2019-07-21.tgz -rw-r--r-- 1 root root 26123344 Jul 24 23:36 gop-live-point_txn_aggregator-data-2019-07-22.tgz -rw-r--r-- 1 root root 25337107 Jul 26 00:10 gop-live-point_txn_aggregator-data-2019-07-23.tgz -rw-r--r-- 1 root root 23113614 Jul 26 23:52 gop-live-point_txn_aggregator-data-2019-07-24.tgz -rw-r--r-- 1 root root 22578291 Jul 28 00:37 gop-live-point_txn_aggregator-data-2019-07-25.tgz -rw-r--r-- 1 root root 28572628 Jul 29 01:21 gop-live-point_txn_aggregator-data-2019-07-26.tgz -rw-r--r-- 1 root root 29820440 Jul 30 01:18 gop-live-point_txn_aggregator-data-2019-07-27.tgz -rw-r--r-- 1 root root 25214160 Jul 31 01:26 gop-live-point_txn_aggregator-data-2019-07-28.tgz -rw-r--r-- 1 root root 20978337 Aug 1 00:27 gop-live-point_txn_aggregator-data-2019-07-29.tgz -rw-r--r-- 1 root root 22192620 Aug 1 23:12 gop-live-point_txn_aggregator-data-2019-07-30.tgz -rw-r--r-- 1 root root 6329205 Jul 31 00:59 gop-live-point_txn_aggregator-data-2019-07-31_00000 -rw-r--r-- 1 root root 5786176 Jul 31 02:00 gop-live-point_txn_aggregator-data-2019-07-31_00001 -rw-r--r-- 1 root root 5451181 Jul 31 03:00 gop-live-point_txn_aggregator-data-2019-07-31_00002 -rw-r--r-- 1 root root 5621760 Jul 31 04:00 gop-live-point_txn_aggregator-data-2019-07-31_00003 -rw-r--r-- 1 root root 5820921 Jul 31 05:00 gop-live-point_txn_aggregator-data-2019-07-31_00004 -rw-r--r-- 1 root root 6088472 Jul 31 05:59 gop-live-point_txn_aggregator-data-2019-07-31_00005 -rw-r--r-- 1 root root 6048663 Jul 31 06:59 gop-live-point_txn_aggregator-data-2019-07-31_00006 -rw-r--r-- 1 root root 6434107 Jul 31 08:00 gop-live-point_txn_aggregator-data-2019-07-31_00007 -rw-r--r-- 1 root root 6937321 Jul 31 09:00 gop-live-point_txn_aggregator-data-2019-07-31_00008 -rw-r--r-- 1 root root 6717315 Jul 31 09:59 gop-live-point_txn_aggregator-data-2019-07-31_00009 -rw-r--r-- 1 root root 6667836 Jul 31 10:59 gop-live-point_txn_aggregator-data-2019-07-31_00010 -rw-r--r-- 1 root root 6559363 Jul 31 12:00 gop-live-point_txn_aggregator-data-2019-07-31_00011 -rw-r--r-- 1 root root 6107832 Jul 31 12:59 gop-live-point_txn_aggregator-data-2019-07-31_00012 -rw-r--r-- 1 root root 6323896 Jul 31 13:59 gop-live-point_txn_aggregator-data-2019-07-31_00013 -rw-r--r-- 1 root root 6389052 Jul 31 15:00 gop-live-point_txn_aggregator-data-2019-07-31_00014 -rw-r--r-- 1 root root 6504740 Jul 31 16:00 gop-live-point_txn_aggregator-data-2019-07-31_00015 -rw-r--r-- 1 root root 6796378 Jul 31 17:00 gop-live-point_txn_aggregator-data-2019-07-31_00016 -rw-r--r-- 1 root root 7878303 Jul 31 18:00 gop-live-point_txn_aggregator-data-2019-07-31_00017 -rw-r--r-- 1 root root 8900771 Jul 31 19:00 gop-live-point_txn_aggregator-data-2019-07-31_00018 -rw-r--r-- 1 root root 9379681 Jul 31 20:00 gop-live-point_txn_aggregator-data-2019-07-31_00019 -rw-r--r-- 1 root root 10435828 Jul 31 21:00 gop-live-point_txn_aggregator-data-2019-07-31_00020 -rw-r--r-- 1 root root 10127803 Jul 31 22:00 gop-live-point_txn_aggregator-data-2019-07-31_00021 -rw-r--r-- 1 root root 8788741 Jul 31 22:59 gop-live-point_txn_aggregator-data-2019-07-31_00022 -rw-r--r-- 1 root root 7747234 Jul 31 23:59 gop-live-point_txn_aggregator-data-2019-07-31_00023 -rw-r--r-- 1 root root 6983387 Aug 1 00:59 gop-live-point_txn_aggregator-data-2019-08-01_00000 -rw-r--r-- 1 root root 6572435 Aug 1 02:00 gop-live-point_txn_aggregator-data-2019-08-01_00001 -rw-r--r-- 1 root root 5959884 Aug 1 03:00 gop-live-point_txn_aggregator-data-2019-08-01_00002 -rw-r--r-- 1 root root 5834298 Aug 1 04:00 gop-live-point_txn_aggregator-data-2019-08-01_00003 -rw-r--r-- 1 root root 6008950 Aug 1 04:59 gop-live-point_txn_aggregator-data-2019-08-01_00004 -rw-r--r-- 1 root root 6614511 Aug 1 06:00 gop-live-point_txn_aggregator-data-2019-08-01_00005 -rw-r--r-- 1 root root 6934464 Aug 1 07:00 gop-live-point_txn_aggregator-data-2019-08-01_00006 -rw-r--r-- 1 root root 7501841 Aug 1 08:00 gop-live-point_txn_aggregator-data-2019-08-01_00007 -rw-r--r-- 1 root root 8018389 Aug 1 09:00 gop-live-point_txn_aggregator-data-2019-08-01_00008 -rw-r--r-- 1 root root 8113113 Aug 1 10:00 gop-live-point_txn_aggregator-data-2019-08-01_00009 -rw-r--r-- 1 root root 8247397 Aug 1 11:00 gop-live-point_txn_aggregator-data-2019-08-01_00010 -rw-r--r-- 1 root root 9334051 Aug 1 12:00 gop-live-point_txn_aggregator-data-2019-08-01_00011 -rw-r--r-- 1 root root 8284898 Aug 1 12:59 gop-live-point_txn_aggregator-data-2019-08-01_00012 -rw-r--r-- 1 root root 9218796 Aug 1 14:00 gop-live-point_txn_aggregator-data-2019-08-01_00013 -rw-r--r-- 1 root root 7875013 Aug 1 15:00 gop-live-point_txn_aggregator-data-2019-08-01_00014 -rw-r--r-- 1 root root 4420827 Aug 1 16:00 gop-live-point_txn_aggregator-data-2019-08-01_00015 -rw-r--r-- 1 root root 7999875 Aug 1 16:59 gop-live-point_txn_aggregator-data-2019-08-01_00016 -rw-r--r-- 1 root root 9480688 Aug 1 18:00 gop-live-point_txn_aggregator-data-2019-08-01_00017 -rw-r--r-- 1 root root 10069991 Aug 1 19:00 gop-live-point_txn_aggregator-data-2019-08-01_00018 -rw-r--r-- 1 root root 11397317 Aug 1 20:00 gop-live-point_txn_aggregator-data-2019-08-01_00019 -rw-r--r-- 1 root root 12597957 Aug 1 21:00 gop-live-point_txn_aggregator-data-2019-08-01_00020 -rw-r--r-- 1 root root 11541451 Aug 1 22:00 gop-live-point_txn_aggregator-data-2019-08-01_00021 -rw-r--r-- 1 root root 10813577 Aug 1 23:00 gop-live-point_txn_aggregator-data-2019-08-01_00022 -rw-r--r-- 1 root root 9507499 Aug 2 00:00 gop-live-point_txn_aggregator-data-2019-08-01_00023 -rw-r--r-- 1 root root 8110763 Aug 2 01:00 gop-live-point_txn_aggregator-data-2019-08-02_00000 -rw-r--r-- 1 root root 7238339 Aug 2 02:00 gop-live-point_txn_aggregator-data-2019-08-02_00001 -rw-r--r-- 1 root root 6577030 Aug 2 02:59 gop-live-point_txn_aggregator-data-2019-08-02_00002 -rw-r--r-- 1 root root 6586196 Aug 2 04:00 gop-live-point_txn_aggregator-data-2019-08-02_00003 -rw-r--r-- 1 root root 6883540 Aug 2 05:00 gop-live-point_txn_aggregator-data-2019-08-02_00004 -rw-r--r-- 1 root root 7172237 Aug 2 06:00 gop-live-point_txn_aggregator-data-2019-08-02_00005 -rw-r--r-- 1 root root 7293336 Aug 2 07:00 gop-live-point_txn_aggregator-data-2019-08-02_00006 -rw-r--r-- 1 root root 7728992 Aug 2 08:00 gop-live-point_txn_aggregator-data-2019-08-02_00007 -rw-r--r-- 1 root root 8154425 Aug 2 09:00 gop-live-point_txn_aggregator-data-2019-08-02_00008 -rw-r--r-- 1 root root 8036346 Aug 2 09:59 gop-live-point_txn_aggregator-data-2019-08-02_00009 -rw-r--r-- 1 root root 7940669 Aug 2 11:00 gop-live-point_txn_aggregator-data-2019-08-02_00010 -rw-r--r-- 1 root root 7901900 Aug 2 12:00 gop-live-point_txn_aggregator-data-2019-08-02_00011 -rw-r--r-- 1 root root 8501400 Aug 2 13:00 gop-live-point_txn_aggregator-data-2019-08-02_00012 -rw-r--r-- 1 root root 8024730 Aug 2 13:59 gop-live-point_txn_aggregator-data-2019-08-02_00013 -rw-r--r-- 1 root root 8413981 Aug 2 14:59 gop-live-point_txn_aggregator-data-2019-08-02_00014 -rw-r--r-- 1 root root 5899646 Aug 2 15:50 gop-live-point_txn_aggregator-data-2019-08-02_00015 lrwxrwxrwx 1 root root 51 Aug 2 15:00 gop-live-point_txn_aggregator-data_current -> gop-live-point_txn_aggregator-data-2019-08-02_00015
backup and rsync scripts
check_original_log.sh
1 2 3 4 #!/bin/bash var_date=$1 var_src="/data/gop/live/primary/gop" find ${var_src} | grep -i ${var_date}
check_backup_log.sh
1 2 3 4 #!/bin/bash var_date=$1 var_src="/data/backup/" find ${var_src} | grep -i ${var_date}
copy_dir_to_backup.sh
1 2 3 4 5 6 7 #!/bin/bash var_path="/data/gop/live/primary/gop/" var_str="/data/backup/" rsync -a --include='*/' --exclude='*' ${var_path} ${var_str}
move_backup.sh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 #!/bin/bash var_date=$1 var_path="/data/gop/live/primary/gop" var_str="/data/backup" find ${var_path} | grep -i ${var_date} > log /${var_date} .ori.out cp log /${var_date} .ori.out log /${var_date} .mod.out sed -i "s:/data/gop/live/primary/gop:${var_str} :g" log /${var_date} .mod.out paste -d "|" log /${var_date} .ori.out log /${var_date} .mod.out > log /${var_date} .out for i in `cat log /${var_date} .out`do var_a=`echo ${i} | cut -f1 -d"|" ` var_b=`echo ${i} | cut -f2 -d"|" ` mv ${var_a} ${var_b} done
rsync_backup.sh
1 2 3 4 5 #!/bin/bash var_src="/data/backup/" var_des="rsync://10.71.12.61:873/backup/" rsync -aP ${var_src} ${var_des}
clean_backup_log.sh
1 2 3 4 5 #!/bin/bash var_date=$1 var_src="/data/backup/" find ${var_src} | grep -i ${var_date} | xargs rm -f
log out samples
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 # 2019-05.ori.out /data/gop/live/primary/gop/gop-live-gop_huawei_data_server-daemon/gop-live-gop_huawei_data_server-daemon-2019-05-25.tgz /data/gop/live/primary/gop/gop-live-gop_huawei_data_server-daemon/gop-live-gop_huawei_data_server-daemon-2019-05-27.tgz /data/gop/live/primary/gop/gop-live-gop_huawei_data_server-daemon/gop-live-gop_huawei_data_server-daemon-2019-05-23.tgz /data/gop/live/primary/gop/gop-live-gop_huawei_data_server-daemon/gop-live-gop_huawei_data_server-daemon-2019-05-30.tgz /data/gop/live/primary/gop/gop-live-gop_huawei_data_server-daemon/gop-live-gop_huawei_data_server-daemon-2019-05-31.tgz /data/gop/live/primary/gop/gop-live-gop_huawei_data_server-daemon/gop-live-gop_huawei_data_server-daemon-2019-05-28.tgz /data/gop/live/primary/gop/gop-live-gop_huawei_data_server-daemon/gop-live-gop_huawei_data_server-daemon-2019-05-24.tgz /data/gop/live/primary/gop/gop-live-gop_huawei_data_server-daemon/gop-live-gop_huawei_data_server-daemon-2019-05-26.tgz /data/gop/live/primary/gop/gop-live-gop_huawei_data_server-daemon/gop-live-gop_huawei_data_server-daemon-2019-05-29.tgz /data/gop/live/primary/gop/gop-live-gop_line_data_server-daemon/gop-live-gop_line_data_server-daemon-2019-05-31.tgz /data/gop/live/primary/gop/gop-live-gop_line_data_server-daemon/gop-live-gop_line_data_server-daemon-2019-05-29.tgz /data/gop/live/primary/gop/gop-live-gop_line_data_server-daemon/gop-live-gop_line_data_server-daemon-2019-05-23.tgz /data/gop/live/primary/gop/gop-live-gop_line_data_server-daemon/gop-live-gop_line_data_server-daemon-2019-05-30.tgz /data/gop/live/primary/gop/gop-live-gop_line_data_server-daemon/gop-live-gop_line_data_server-daemon-2019-05-27.tgz /data/gop/live/primary/gop/gop-live-gop_line_data_server-daemon/gop-live-gop_line_data_server-daemon-2019-05-28.tgz /data/gop/live/primary/gop/gop-live-gop_line_data_server-daemon/gop-live-gop_line_data_server-daemon-2019-05-24.tgz /data/gop/live/primary/gop/gop-live-gop_line_data_server-daemon/gop-live-gop_line_data_server-daemon-2019-05-25.tgz /data/gop/live/primary/gop/gop-live-gop_line_data_server-daemon/gop-live-gop_line_data_server-daemon-2019-05-26.tgz # 2019-05.mod.out /data/backup/gop-live-gop_huawei_data_server-daemon/gop-live-gop_huawei_data_server-daemon-2019-05-25.tgz /data/backup/gop-live-gop_huawei_data_server-daemon/gop-live-gop_huawei_data_server-daemon-2019-05-27.tgz /data/backup/gop-live-gop_huawei_data_server-daemon/gop-live-gop_huawei_data_server-daemon-2019-05-23.tgz /data/backup/gop-live-gop_huawei_data_server-daemon/gop-live-gop_huawei_data_server-daemon-2019-05-30.tgz /data/backup/gop-live-gop_huawei_data_server-daemon/gop-live-gop_huawei_data_server-daemon-2019-05-31.tgz /data/backup/gop-live-gop_huawei_data_server-daemon/gop-live-gop_huawei_data_server-daemon-2019-05-28.tgz /data/backup/gop-live-gop_huawei_data_server-daemon/gop-live-gop_huawei_data_server-daemon-2019-05-24.tgz /data/backup/gop-live-gop_huawei_data_server-daemon/gop-live-gop_huawei_data_server-daemon-2019-05-26.tgz /data/backup/gop-live-gop_huawei_data_server-daemon/gop-live-gop_huawei_data_server-daemon-2019-05-29.tgz /data/backup/gop-live-gop_line_data_server-daemon/gop-live-gop_line_data_server-daemon-2019-05-31.tgz /data/backup/gop-live-gop_line_data_server-daemon/gop-live-gop_line_data_server-daemon-2019-05-29.tgz /data/backup/gop-live-gop_line_data_server-daemon/gop-live-gop_line_data_server-daemon-2019-05-23.tgz /data/backup/gop-live-gop_line_data_server-daemon/gop-live-gop_line_data_server-daemon-2019-05-30.tgz /data/backup/gop-live-gop_line_data_server-daemon/gop-live-gop_line_data_server-daemon-2019-05-27.tgz /data/backup/gop-live-gop_line_data_server-daemon/gop-live-gop_line_data_server-daemon-2019-05-28.tgz /data/backup/gop-live-gop_line_data_server-daemon/gop-live-gop_line_data_server-daemon-2019-05-24.tgz /data/backup/gop-live-gop_line_data_server-daemon/gop-live-gop_line_data_server-daemon-2019-05-25.tgz /data/backup/gop-live-gop_line_data_server-daemon/gop-live-gop_line_data_server-daemon-2019-05-26.tgz # 2019-05.out /data/gop/live/primary/gop/gop-live-gop_huawei_data_server-daemon/gop-live-gop_huawei_data_server-daemon-2019-05-25.tgz|/data/backup/gop-live-gop_huawei_data_server-daemon/gop-live-gop_huawei_data_server-daemon-2019-05-25.tgz /data/gop/live/primary/gop/gop-live-gop_huawei_data_server-daemon/gop-live-gop_huawei_data_server-daemon-2019-05-27.tgz|/data/backup/gop-live-gop_huawei_data_server-daemon/gop-live-gop_huawei_data_server-daemon-2019-05-27.tgz /data/gop/live/primary/gop/gop-live-gop_huawei_data_server-daemon/gop-live-gop_huawei_data_server-daemon-2019-05-23.tgz|/data/backup/gop-live-gop_huawei_data_server-daemon/gop-live-gop_huawei_data_server-daemon-2019-05-23.tgz /data/gop/live/primary/gop/gop-live-gop_huawei_data_server-daemon/gop-live-gop_huawei_data_server-daemon-2019-05-30.tgz|/data/backup/gop-live-gop_huawei_data_server-daemon/gop-live-gop_huawei_data_server-daemon-2019-05-30.tgz /data/gop/live/primary/gop/gop-live-gop_huawei_data_server-daemon/gop-live-gop_huawei_data_server-daemon-2019-05-31.tgz|/data/backup/gop-live-gop_huawei_data_server-daemon/gop-live-gop_huawei_data_server-daemon-2019-05-31.tgz /data/gop/live/primary/gop/gop-live-gop_huawei_data_server-daemon/gop-live-gop_huawei_data_server-daemon-2019-05-28.tgz|/data/backup/gop-live-gop_huawei_data_server-daemon/gop-live-gop_huawei_data_server-daemon-2019-05-28.tgz /data/gop/live/primary/gop/gop-live-gop_huawei_data_server-daemon/gop-live-gop_huawei_data_server-daemon-2019-05-24.tgz|/data/backup/gop-live-gop_huawei_data_server-daemon/gop-live-gop_huawei_data_server-daemon-2019-05-24.tgz /data/gop/live/primary/gop/gop-live-gop_huawei_data_server-daemon/gop-live-gop_huawei_data_server-daemon-2019-05-26.tgz|/data/backup/gop-live-gop_huawei_data_server-daemon/gop-live-gop_huawei_data_server-daemon-2019-05-26.tgz /data/gop/live/primary/gop/gop-live-gop_huawei_data_server-daemon/gop-live-gop_huawei_data_server-daemon-2019-05-29.tgz|/data/backup/gop-live-gop_huawei_data_server-daemon/gop-live-gop_huawei_data_server-daemon-2019-05-29.tgz /data/gop/live/primary/gop/gop-live-gop_line_data_server-daemon/gop-live-gop_line_data_server-daemon-2019-05-31.tgz|/data/backup/gop-live-gop_line_data_server-daemon/gop-live-gop_line_data_server-daemon-2019-05-31.tgz # 2019-05.rsync.out nohup: ignoring input sending incremental file list ./ gop-live-account.garena.com-access/ gop-live-account.garena.com-access/gop-live-account.garena.com-access-2019-05-01.tgz ^M 32,768 0% 0.00kB/s 0:00:00 ^M 75,551,185 100% 188.53MB/s 0:00:00 (xfr#1, ir-chk=1053/1441) gop-live-account.garena.com-access/gop-live-account.garena.com-access-2019-05-02.tgz ^M 32,768 0% 81.01kB/s 0:15:24 ^M 74,896,153 100% 82.01MB/s 0:00:00 (xfr#2, ir-chk=1052/1441)
log cleanup exclude list /data/nc_backup
gop-live-tcp_server gop-live-sso_website gop-live-app_point gop-live-gop_vk_data_server gop-live-gop_huawei_data_server gop-live-gop_line_data_server gop-live-gop_google_data_server gop-live-gop_fb_data_server gop-live-gop_data_server gop-live-general-api_server gop-live-payment_center gop-live-msdk_api gop-live-cron_autofix gop-live-shell_api_server gop-live-api_server gop-staging-payment_center gop-staging-msdk_api
create python script to combine multiple lines
1 2 3 4 5 6 7 data=open("file" ).readlines() for n,line in enumerate(data): if line.startswith("line" ): data[n] = "\n" +line.rstrip() else : data[n]=line.rstrip() print ('|' .join(data))
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 # simple example Englist 中文 Englist | 中文 # can change line.startwith line1 text1 text2 text3 line2 something1 something2 line1|text1|text2|text3| line2|something1|something2
use find to filter the log
1 2 3 4 5 6 find /data/nc_backup -type d > log_source find /data/nc_backup -type d | egrep -v "gop-live-tcp_server|gop-live-sso_website|gop-live-app_point|gop-live-gop_vk_data_server|gop-live-gop_huawei_data_server|gop-live-gop_line_data_server|gop-live-gop_google_data_server|gop-live-gop_fb_data_server|gop-live-gop_data_server|gop-live-general-api_server|gop-live-payment_center|gop-live-msdk_api|gop-live-cron_autofix|gop-live-shell_api_server|gop-live-api_server|gop-staging-payment_center|gop-staging-msdk_api" > log_target sed -i '1d' log_source sed -i '1d' log_target