我想要tar
一些包含的目录gzip
。请让我知道它的语法是什么。还需考虑以下几点。
tar.gz
1) 如果在一个 tar 文件完成 2G 后进行分割,将会很有帮助。(比如:tar.gzaa
变成 2G,那么它应该继续创建tar.gzab
)
2) 将日志信息附加到日志文件的语法
3)排除某些类型的具有特定扩展名的文件(假设我的源目录将是tar,其中有一些带有.log
文件的子目录,我需要排除那些要被tarred的文件。
提前致谢。
答案1
也许你可以尝试这样的事情:
tar --exclude='*.EXTENSION' -czvf - DIRECTORY/ 2> LOG_FILE.log | split --verbose --bytes=2048MB - FILE.tar.gz. >> LOG_FILE.log
我们来测试一下。假设我们有一个directory
以此文件命名的目录:
eduardo@Notebook:~/testtar$ ll -h directory/
total 570M
drwxr-xr-x 2 eduardo eduardo 4,0K mar 6 23:25 ./
drwxr-xr-x 3 eduardo eduardo 4,0K mar 6 23:28 ../
-rw-r--r-- 1 eduardo eduardo 0 mar 6 23:16 file.any
-rw-r--r-- 1 eduardo eduardo 570M mar 6 23:24 hugefile.dd
-rw-r--r-- 1 eduardo eduardo 0 mar 6 23:15 image.jpg
-rw-r--r-- 1 eduardo eduardo 0 mar 6 23:16 log.log
-rw-r--r-- 1 eduardo eduardo 0 mar 6 23:14 text.txt
焦油命令:
tar --exclude='*.log' -czvf - directory/ 2> splitted_tar.log | split --verbose --bytes=50MB - splitted_tar_file.tar.gz. >> splitted_tar.log
输出文件:
eduardo@Notebook:~/testtar$ ll -h
total 299M
drwxr-xr-x 3 eduardo eduardo 4,0K mar 6 23:53 ./
drwxr-xr-x 41 eduardo eduardo 4,0K mar 6 23:16 ../
drwxr-xr-x 2 eduardo eduardo 4,0K mar 6 23:25 directory/
-rw-r--r-- 1 eduardo eduardo 48M mar 6 23:52 splitted_tar_file.tar.gz.aa
-rw-r--r-- 1 eduardo eduardo 48M mar 6 23:53 splitted_tar_file.tar.gz.ab
-rw-r--r-- 1 eduardo eduardo 48M mar 6 23:53 splitted_tar_file.tar.gz.ac
-rw-r--r-- 1 eduardo eduardo 48M mar 6 23:53 splitted_tar_file.tar.gz.ad
-rw-r--r-- 1 eduardo eduardo 48M mar 6 23:53 splitted_tar_file.tar.gz.ae
-rw-r--r-- 1 eduardo eduardo 48M mar 6 23:53 splitted_tar_file.tar.gz.af
-rw-r--r-- 1 eduardo eduardo 13M mar 6 23:53 splitted_tar_file.tar.gz.ag
-rw-r--r-- 1 eduardo eduardo 399 mar 6 23:53 splitted_tar.log
日志档案:
eduardo@Notebook:~/testtar$ cat splitted_tar.log
directory/
directory/text.txt
directory/hugefile.dd
directory/file.any
directory/image.jpg
creating file 'splitted_tar_file.tar.gz.aa'
creating file 'splitted_tar_file.tar.gz.ab'
creating file 'splitted_tar_file.tar.gz.ac'
creating file 'splitted_tar_file.tar.gz.ad'
creating file 'splitted_tar_file.tar.gz.ae'
creating file 'splitted_tar_file.tar.gz.af'
creating file 'splitted_tar_file.tar.gz.ag'
笔记:
- 由于参数的原因,该文件
log.log
未包含在最终文件中(请确保将其放在源项目和目标项目之前).tar.gz
--exclude
- Tar 详细输出转到 STDERR,这就是我使用的原因
2> LOG_FILE.log
- 分割详细输出到 STDOUT,我只是将其附加
>> LOG_FILE.log
要“恢复”您的目录(加入、gunzip 和解压),您可以使用:
cat splitted_tar_file.tar.gz.a? | tar -xzvf -