在 for 循环中使用 'tar' 命令
Using 'tar' command in for loop
我知道这是个基本问题,但请帮帮我。我使用 tar 命令
压缩并存档了我的服务器日志文件
for i in server.log.2016-07-05 server.log.2016-07-06 ; do tar -zcvf server2.tar.gz $i; done
以上循环的输出为:
server.log.2016-07-05
server.log.2016-07-06
但是在使用 tar -tvf server2.tar.gz
列出文件时获得的输出是:
rw-r--r-- root/root 663643914 2016-07-06 23:59 server.log.2016-07-06
也就是说,我存档了两个文件,但只显示了一个文件,这意味着存档没有两个文件吗??请帮忙解决这个问题。
我刚刚用这两个文件进行了测试,但我的文件夹中有多个文件。因为我没有得到预期的输出,所以我没有继续处理文件夹中的所有文件。我要使用的确切循环是:
Previousmonth=$(date "+%b" --date '1 month ago')
for i in $(ls -l | awk '/'$Previousmonth'/ && /server.log./ {print $NF}');do;tar -zcvf server2.tar.gz $i;done
我正在尝试压缩和存档多个文件,但在使用 tar -tvf
列出文件时它没有显示所有文件。
这里不需要循环。只需列出您要添加为命令行参数的所有文件:
tar -zcvf server2.tar.gz server.log.2016-07-05 server.log.2016-07-06
你的另一个例子也是如此:
tar -zcvf server2.tar.gz $(ls -l | awk '/'$Previousmonth'/ && /server.log./ {print $NF}')
除了解析 ls -l
的输出很糟糕,强烈不推荐。
但是由于要备份的文件名包含月份数字,
一个更简单和更好的解决方案是使用 date
命令获取年+月数,然后使用 shell globbing:
prefix=$(date +%Y-%m -d 'last month')
tar -zcvf server2.tar.gz server.log.$prefix-??
我知道这是个基本问题,但请帮帮我。我使用 tar 命令
压缩并存档了我的服务器日志文件for i in server.log.2016-07-05 server.log.2016-07-06 ; do tar -zcvf server2.tar.gz $i; done
以上循环的输出为:
server.log.2016-07-05
server.log.2016-07-06
但是在使用 tar -tvf server2.tar.gz
列出文件时获得的输出是:
rw-r--r-- root/root 663643914 2016-07-06 23:59 server.log.2016-07-06
也就是说,我存档了两个文件,但只显示了一个文件,这意味着存档没有两个文件吗??请帮忙解决这个问题。
我刚刚用这两个文件进行了测试,但我的文件夹中有多个文件。因为我没有得到预期的输出,所以我没有继续处理文件夹中的所有文件。我要使用的确切循环是:
Previousmonth=$(date "+%b" --date '1 month ago')
for i in $(ls -l | awk '/'$Previousmonth'/ && /server.log./ {print $NF}');do;tar -zcvf server2.tar.gz $i;done
我正在尝试压缩和存档多个文件,但在使用 tar -tvf
列出文件时它没有显示所有文件。
这里不需要循环。只需列出您要添加为命令行参数的所有文件:
tar -zcvf server2.tar.gz server.log.2016-07-05 server.log.2016-07-06
你的另一个例子也是如此:
tar -zcvf server2.tar.gz $(ls -l | awk '/'$Previousmonth'/ && /server.log./ {print $NF}')
除了解析 ls -l
的输出很糟糕,强烈不推荐。
但是由于要备份的文件名包含月份数字,
一个更简单和更好的解决方案是使用 date
命令获取年+月数,然后使用 shell globbing:
prefix=$(date +%Y-%m -d 'last month')
tar -zcvf server2.tar.gz server.log.$prefix-??