所以我的备份程序将备份存档文件。我想列出它们并从服务器中删除它们。成功备份后创建日志文件为000000#.XLOG。我可以使用以下内容从日志中获取文件:
cat 00000008.XLOG | grep string1 | awk'{print $ 7}'|切-d'>' -f2 | cut -d'<' -f1 | grep string2 | grep .log
然后我可以删除那些所说的文件。
我需要帮助的是如何动态搜索正确的备份日志文件(刚刚发生的备份)以便能够获取文件并将其删除。任何建议表示赞赏。我想在某种程度上在脚本的开头获取时间戳,然后从比所述时间戳更新的任何.xlog文件中获取信息,因为应该只有一个,因为脚本生成时间戳,启动备份,然后抓取文件并删除它们。我只是不知道它的语法。
任何帮助或进一步的建议都将不胜感激。
存储日志文件的目录的ls -l:
-rw-rw-rw- 1 root root 2154 Feb 29 23:46 00000001.CAT
-rw-rw-rw- 1 root root 10153 Feb 29 23:46 00000001.XLOG
-rw-rw-rw- 1 root root 1308 Mar 6 03:22 00000002.CAT
-rw-rw-rw- 1 root root 5257 Mar 6 03:22 00000002.XLOG
-rw-rw-rw- 1 root root 1276 Mar 6 03:23 00000003.CAT
-rw-rw-rw- 1 root root 4565 Mar 6 03:23 00000003.XLOG
-rw-rw-rw- 1 root root 1280 Mar 6 03:26 00000004.CAT
-rw-rw-rw- 1 root root 4662 Mar 6 03:26 00000004.XLOG
-rw-rw-rw- 1 root root 1278 Mar 6 03:27 00000005.CAT
-rw-rw-rw- 1 root root 4748 Mar 6 03:27 00000005.XLOG
-rw-rw-rw- 1 root root 1278 Mar 6 03:29 00000006.CAT
-rw-rw-rw- 1 root root 4838 Mar 6 03:29 00000006.XLOG
-rw-rw-rw- 1 root root 1280 Mar 6 03:30 00000007.CAT
-rw-rw-rw- 1 root root 5881 Mar 6 03:30 00000007.DTA
-rw-rw-rw- 1 root root 1240 Mar 6 03:30 00000007.DTX
-rw-rw-rw- 1 root root 4929 Mar 6 03:30 00000007.XLOG
-rw-rw-rw- 1 root root 14019 Mar 31 04:43 00000008.CAT
-rw-rw-rw- 1 root root 220750 Mar 31 04:43 00000008.DTA
-rw-rw-rw- 1 root root 12160 Mar 31 04:43 00000008.DTX
-rw-rw-rw- 1 root root 97720 3月31日04:43 00000008.XLOG
-rw-rw-rw- 1 root root 768 Mar 31 04:43 BackupStatus.xml
-rw-rw-rw- 1 root root 768 Mar 31 21:22 RestoreStatus.xml
-rw-rw-rw- 1 root root 5360 3月31日21:22 RST20160331-212219.XLOG
-rw-rw-rw- 1 root root 1533 Mar 31 21:22 SYNCH.DAT
-rw-rw-rw- 1 root root 1533 Mar 31 21:22 SYNCH.MIR
输出我的命令:
/dir/dir/dir/arch.log
/dir/dir/dir/arch2.log
/dir/dir/dir/arch3.log
等等
这是文件的总体布局:
<M ID="4384" O="VV" C="BKUP" S="I" T="2016-03-08T09:43:52. 0-08:00"></M>
<M ID="4314" C="BKUP" S="I" T="2016-03-08T09:43:52. 0-08:00"><PS><P T="0">7.20.5420 Oct 21 2013 12:01:35</P></PS></M>
<M ID="4127" C="BKUP" S="I" T="2016-03-08T09:43:52. 0-08:00"><PS><P T="1">2016-03-08T09:43:52. 0-08:00</P></PS></M>
答案 0 :(得分:0)
成功备份后创建日志文件为000000#.XLOG
和
我需要帮助的是如何动态搜索正确的备份日志文件(刚刚发生的备份),以便能够获取文件并将其删除。
我一起理解,最后创建的 .XLOG 文件是与上次成功备份相关联的文件。
列出最后创建的 .XLOG 文件:
ls -1rt *.XLOG | tail -n 1
使用单行命令:
grep string1 $(ls -1rt *.XLOG | tail -n 1) | awk '{print $7}' | cut -d '>' -f2 | cut -d '<' -f1 | grep string2 | grep .log
如果文件名中有特殊字符,则安全版本下方:
find . -type f -printf "%T@ %p\0" | awk 'BEGIN {RS="\000";} {if (!newesttimestamp || ($1 > newesttimestamp)) {newesttimestamp=$1;newestline=$0;}} END{if (newestline) {print substr(newestline,23);}}'
使用单行命令:
grep string1 $(find . -type f -printf "%T@ %p\0" | awk 'BEGIN {RS="\000";} {if (!newesttimestamp || ($1 > newesttimestamp)) {newesttimestamp=$1;newestline=$0;}} END{if (newestline) {print substr(newestline,23);}}') | awk '{print $7}' | cut -d '>' -f2 | cut -d '<' -f1 | grep string2 | grep .log
已经提供的命令已经过示例测试,但更新的单行代码除外。
以下命令尚未经过测试。
使用最终而块测试单行命令:
$ grep string1 $(find . -type f -printf "%T@ %p\0" | awk 'BEGIN {RS="\000";} {if (!newesttimestamp || ($1 > newesttimestamp)) {newesttimestamp=$1;newestline=$0;}} END{if (newestline) {print substr(newestline,23);}}') | awk '{print $7}' | cut -d '>' -f2 | cut -d '<' -f1 | grep string2 | grep .log | while read -r line; do printf "%s\n" "${line}"; done
如果一切正常,请使用 rm 替换上一个 块中的 printf :
$ grep string1 $(find . -type f -printf "%T@ %p\0" | awk 'BEGIN {RS="\000";} {if (!newesttimestamp || ($1 > newesttimestamp)) {newesttimestamp=$1;newestline=$0;}} END{if (newestline) {print substr(newestline,23);}}') | awk '{print $7}' | cut -d '>' -f2 | cut -d '<' -f1 | grep string2 | grep .log | while read -r line; do rm -- "${line}"; done