客户端将文件上传到开发服务器。当需要将项目上传到生产服务器时,不再需要这些文件,我们希望将它们从最终推送到生产的 tar 文件中排除。但是,我们仍然希望保持目录完整,只是不需要的文件
使用 Ubuntu 16 和 tar 1.28,我们尝试过:
tar -vczf archive.tar.gz . --exclude=wp-content/uploads/wpallimport/files/*
tar: Cowardly refusing to create an empty archive
Run Code Online (Sandbox Code Playgroud)
我们还尝试将 exclude= 参数括在单引号和双引号中,但没有成功。
tar -vczf archive.tar.gz . --exclude='wp-content/uploads/wpallimport/files/*'
tar: Cowardly refusing to create an empty archive
Run Code Online (Sandbox Code Playgroud)
在官方网站上显示--exclude没有等号
tar -vczf file.tar.gz --exclude 'directory/*' . 并给出相同的错误。
这是怎么做的?
ste*_*ver 26
tar's--exclude选项的常见问题是它是相对于目录参数的,例如给定
$ tree dir
dir
??? subdir
??? subsubdir
??? file1
??? file2
??? file3
2 directories, 3 files
Run Code Online (Sandbox Code Playgroud)
然后
$ tar cvf dir.tar.gz --exclude='/dir/subdir/subsubdir/*' dir
dir/
dir/subdir/
dir/subdir/subsubdir/
dir/subdir/subsubdir/file1
dir/subdir/subsubdir/file2
dir/subdir/subsubdir/file3
Run Code Online (Sandbox Code Playgroud)
未能排除的内容subsubdir(它试图排除dir/dir/subdir/subsubdir/*,它不匹配任何东西);你想要的是
$ tar cvf dir.tar.gz --exclude='subdir/subsubdir/*' dir
dir/
dir/subdir/
dir/subdir/subsubdir/
Run Code Online (Sandbox Code Playgroud)
AFAIK 除了输出文件必须立即遵循f选项之外,顺序无关紧要。
小智 6
假设您有一个名为“top-dir”的目录,其子文件夹为“dir/subdir”。如果要排除目录“dir/subdir”的内容而不是目录本身,则实际工作的命令行是tar -zcp --exclude='dir/subdir/*' -f archive.tgz top-dir.
您必须在存档文件名-f之后--exclude和之前使用开关。