cd /folder_to_backup
tar --exclude='./folder' --exclude='./upload/folder2' -zcvf /backup/filename.tgz .
cd /folder_to_backup
tar --exclude='./folder' --exclude='./upload/folder2' -zcvf /backup/filename.tgz .
你可以在tar命令中设置多个排除选项,例如:
$ tar --exclude='./folder' --exclude='./upload/folder2' -zcvf /backup/filename.tgz .
等等就可以了。确保在源和目标项目之前放置--exclude
。
tar -zcv --exclude='file1' --exclude='patter*' --exclude='file2' -f /backup/filename.tgz .
请注意,-f
标志需要在 tar 文件之前。
参考:http://superuser.com/a/559341/415047 - Alfred Bez你可以使用 --exclude
在 tar 命令中排除目录。
如果你想归档除了 /usr
目录之外的所有文件,可以使用以下命令:
tar -zcvf /all.tgz / --exclude=/usr
在您的情况下,可能需要类似于以下内容:
tar -zcvf archive.tgz arc_dir --exclude=dir/ignore_this_dir
--exclude=dir/ignore_this_dir
将在 任何 子树中匹配!你最终会错过一些意料之外被排除的文件。 - ygoetar
命令没有--exclude
选项... 嗯 - wcochran使用 tar 排除文件/目录备份的可能选项:
使用多个模式排除文件
tar -czf backup.tar.gz --exclude=PATTERN1 --exclude=PATTERN2 ... /path/to/backup
使用填有模式列表的排除文件来排除文件
tar -czf backup.tar.gz -X /path/to/exclude.txt /path/to/backup
通过在任何应该跳过的目录中放置一个标记文件,使用标记来排除文件
tar -czf backup.tar.gz --exclude-tag-all=exclude.tag /path/to/backup
这个问题早已有很多答案,但我发现没有一个对我来说足够清晰明了,所以我想尝试自己的回答。
如果你有以下这种结构
/home/ftp/mysite/
带有以下文件/文件夹
/home/ftp/mysite/file1
/home/ftp/mysite/file2
/home/ftp/mysite/file3
/home/ftp/mysite/folder1
/home/ftp/mysite/folder2
/home/ftp/mysite/folder3
那么,您希望创建一个tar文件,其中包含/home/ftp/mysite内的所有内容(以便将网站移动到新服务器),但file3只是垃圾,folder3中的所有内容也都不需要,因此我们将跳过这两个。
我们使用的格式为
tar -czvf <name of tar file> <what to tar> <any excludes>
其中 c = 创建(create),z = 压缩(zip),v = 冗余模式(verbose,可以在添加文件时查看它们,有用的是为了确保排除的文件没有被添加)。并且 f = 文件(file)。
所以,我的命令看起来像这样
cd /home/ftp/
tar -czvf mysite.tar.gz mysite --exclude='file3' --exclude='folder3'
请注意,被排除的文件/文件夹是相对于您的tar根目录的(我已经尝试了相对于/的完整路径,但无法实现)。
希望这能帮助某人(也包括下次我谷歌时自己)
tar -czvf mysite.tar.gz mysite --exclude='./mysite/file3' --exclude='./mysite/folder3'
,但这样并没有排除任何东西。 - Anish Ramaswamytar -cvf myFile.tar --exclude=**/.git/* --exclude=**/node_modules/* -T /data/txt/myInputFile.txt 2> /data/txt/myTarLogFile.txt
文件myInputFile.txt内容如下:
/dev2/java
/dev2/javascript
globstar
,可以使用命令shopt -s globstar
来检查。我想在大多数基于Unix的操作系统上,默认情况下该选项是关闭的。根据Bash手册所述:“globstar: 如果设置了此选项,则在文件名扩展环境中使用的模式**
将匹配所有文件、零个或多个目录和子目录。如果模式后面跟着一个'/',则只有目录和子目录会被匹配”。 - not2qubittar
本身有一个选项:--exclude-vcs
。来自 tar(1)
的说明:“排除版本控制系统目录。” - mathway--exclude=.git --exclude=node_modules
起了作用。我还不得不把 --exlcude
参数放在 tar
之后的第一个位置(即在 -c
之前)。我认为这是因为我使用了一些其他选项,但是我想留下这个提示以供其他人参考。 - Kip这个排除模式处理文件名后缀,例如png或mp3,以及目录名称,如.git和node_modules。
tar --exclude={*.png,*.mp3,*.wav,.git,node_modules} -Jcf ${target_tarball} ${source_dirname}
我至少使用的是Cygwin版本的tar(“CYGWIN_NT-5.1 1.7.17(0.262 / 5/3)2012-10-19 14:39 i686 Cygwin”在Windows XP Home Edition SP3机器上),选项的顺序很重要。
虽然对我而言这种构造是有效的:
tar cfvz target.tgz --exclude='<dir1>' --exclude='<dir2>' target_dir
那个没有起作用:
tar cfvz --exclude='<dir1>' --exclude='<dir2>' target.tgz target_dir
这是,而tar --help
则显示如下:
tar [OPTION...] [FILE]
所以,第二个命令应该也能起作用,但显然情况似乎并非如此...tar --exclude="/home/user/.config/chromium" --exclude="/home/user/.cache" -cf file.tar /dir1/ /home/ /dir3/
这些引号并不重要,它们可以有也可以没有。
我希望这对某人有用。
我想展示另一种选项,以获取与之前提供的答案相同的结果。我有一个类似的情况,在那里我想将Android Studio项目一起备份到tar文件中上传到Media Fire。使用du命令查找大文件,我发现我不需要像build、linux和.dart_tools这样的某些目录。使用Charles_ma的第一个答案,我稍微修改了一下,以便能够从我的Android目录的父目录运行该命令。
tar --exclude='*/build' --exclude='*/linux' --exclude='*/.dart_tool' -zcvf androidProjects.tar Android/
它的效果非常好。
附注:如果这种回答不允许,请告知,我会删除。
当归档一些处于某个版本控制系统(VCS)下的目录时,通常方便从该VCS的忽略文件(例如.cvsignore
, .gitignore
等)读取排除模式。此选项提供了这样的可能性。
在归档一个目录之前,请查看它是否包含以下任意一个文件:cvsignore
、 .gitignore
、.bzrignore
或 .hgignore
。如果有,则从这些文件中读取忽略模式。
这些模式会像相应的VCS一样进行处理,即:
.cvsignore
包含适用于此文件所在目录的 shell-style globbing 模式。文件中不允许有注释。空行将被忽略。
.gitignore
包含 shell-style globbing 模式。适用于包含 .gitfile
的目录及其所有子目录。
任何以 #
开头的行都是注释。反斜杠转义注释字符。
.bzrignore
包含 shell globbing 模式和正则表达式(如果以 RE:
(16)为前缀)。模式影响目录及其所有子目录。
任何以 #
开头的行都是注释。
.hgignore
包含posix正则表达式(17)。行syntax:glob
切换到shell globbing模式。行syntax:regexp
切换回来。注释以#
开头。模式影响目录及其所有子目录。
tar -czv --exclude-vcs --exclude-vcs-ignores -f path/to/my-tar-file.tar.gz path/to/my/project/