Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 用于打包多个tar文件的Shell脚本(取决于日期)_Linux_Bash_Shell_Tar - Fatal编程技术网

Linux 用于打包多个tar文件的Shell脚本(取决于日期)

Linux 用于打包多个tar文件的Shell脚本(取决于日期),linux,bash,shell,tar,Linux,Bash,Shell,Tar,我有一些tar文件每天都在增加,例如: 1.tar 2.tar 3.tar 4.tar … 我想等到它达到7.tar、14.tar、28.tar并继续,所以如果可能的话,在shell脚本中,我们可以安排tar执行将文件打包成单个单元tar的操作,例如:每隔7天tar执行打包 last=`ls [0-9]*.tar | sed s/.tar//g | sort -g | tail -1` if(($last%7==0)) then tar tar -cf `date '+%b%d'`.

我有一些tar文件每天都在增加,例如:

1.tar
2.tar
3.tar
4.tar
…
我想等到它达到7.tar、14.tar、28.tar并继续,所以如果可能的话,在shell脚本中,我们可以安排tar执行将文件打包成单个单元tar的操作,例如:每隔7天tar执行打包

last=`ls [0-9]*.tar | sed s/.tar//g | sort -g | tail -1`
if(($last%7==0))
then
     tar tar -cf `date '+%b%d'`.tar [1-9]*.tar
fi
将其添加到登录脚本中,并将在创建7.tar、14.tar等后在下次登录时自动打包所有内容

它是干什么的

last=`ls [0-9]*.tar | sed s/.tar//g | sort -g | tail -1`

列出文件,删除结尾.tar,排序并获取最后一个文件名,这将是最近创建的文件。如果该文件名是7的倍数,则将整个文件打包到名为monthdate的tar文件中,即今天它将在9月24日之前被删除。tar

要自动执行此任务,请参阅cron。欢迎使用堆栈溢出。请尽快阅读这一页。你需要澄清你的问题。有一条很简单:你说“每7天”,但你的例子提到7、14、28。21是意外漏掉的,还是56是序列中的下一个数字,还是什么?接下来,是否有一个单独的脚本生成带编号的tar文件,或者这是打包脚本工作的一部分?当脚本需要打包文件时,是否将1.tar..7.tar打包到week-1.tar,将8.tar..14.tar打包到week-2.tar?你应该使用日期而不是数字吗?你怎么知道什么时候包装好了?…最后,现在,“包装”是什么意思?您是否需要从7个tar文件中提取要打包到新的临时目录中的文件,然后对组合目录进行tar?或者你只是在旧的tar文件存在一周后压缩它们?还是怎样如果一周后压缩,那么我建议在创建时压缩。减压非常便宜,即使是在第一周。