tar(通常针对目录树系统进行备份工作)
GNU `tar' saves many files together into a single tape or disk archive, and can restore individual files from the archive.
tar命令可以将多个文件或目录打包成一个大文件,并能将文件和目录从打包的文件中还原。
常用参数
- -c, --create,create a new archive,建立打包文件
- -t, --list,list the contents of an archive,列出打包文件中的内容(重点在查看文件名)
- -x, --extract, --get,extract files from an archive,解压缩
- -z, --gzip,filter the archive through gzip,通过gzip的格式进行压缩/解压缩,此时文件名最好为*.tar.gz
- -j, --bzip2,filter the archive through bzip2,通过bzip2的格式进行压缩/解压缩,此时文件名最好为*.tar.bz2
- -J, --xz,filter the archive through xz,通过xz的格式进行压缩/解压缩,此时文件名最好为*.tar.xz
- -v, --verbose,verbosely list files processed,详细列出已处理的文件
- -f, --file=ARCHIVE,use archive file or device ARCHIVE,其后接要被处理的文件名
- -C, --directory=DIR,change to directory DIR,该选项用在解压缩(在特定目录中解压缩)
- -p, --preserve-permissions,extract information about file permissions (default for superuser),保留有关文件权限的信息(超级用户的默认设置),常用于备份重要的配置文件
- -P, --absolute-names,don't strip leading `/'s from file names,保留绝对路径
- -X, --exclude-from=FILE,exclude patterns listed in FILE,在压缩过程中不要将FILE打包
常用命令
压缩:tar -cvz/j/J -f filename.tar.gz/bz2/xz
查询:tar -tvz/j/J -f filename.tar.gz/bz2/xz
解压缩:tar -xvz/j/J -f filename.tar.gz/bz2/xz
实践
压缩
[root@bogon ~]# tar -cvzf /tmp/test.tar.gz /etc
查看
[root@bogon ~]# tar -tvzf /tmp/test.tar.gz /etc
drwxr-xr-x root/root 0 2020-03-24 20:02 etc/ntp/
-rw------- root/root 86 2017-10-10 00:30 etc/ntp/keys
-rw-r--r-- root/root 72 2017-10-10 00:30 etc/ntp/step-tickers
drwxr-xr-x root/root 0 2020-03-24 20:02 etc/kernel/
drwxr-xr-x root/root 0 2020-03-24 20:02 etc/kernel/postinst.d/
-rwxr-xr-x root/root 1676 2018-09-27 21:47 etc/kernel/postinst.d/51-dracut-rescue-postinst.sh
-r--r----- root/root 4328 2018-09-25 13:57 etc/sudoers
[root@bogon ~]# tar -xvzf /tmp/test.tar.gz 打包文件会在本目录下进行解压缩
[root@bogon ~]# ll | grep etc drwxr-xr-x. 146 root root 8192 May 6 19:22 etc
查看的时候发现每个文件都没有了根目录,为了安全起见,在tar所记录的文件名就是解压缩后的实际文件名。如果拿掉了根目录,假设将备份数据在 /tmp 解开,那么解压缩的文件就会变成/tmp/etc/xxx。 但如果没有拿掉根目录,解压缩后的文件名就会是绝对路径, 亦即解压缩后的数据一定会被放置 到 /etc/xxx 去,如此一来,原本的 /etc/ 底下的数据, 就会被备份数据所覆盖。
如果确定备份根目录到tar文件中,可以使用-P参数。
xfsdump & xfsrestore(通常针对整个文件系统进行备份与还原)
xfsdump
xfsdump可以对完整的文件系统进行备份,除了进行完整备份,还可以进行累积备份。第一次备份一定是完整备份,完整备份在xfsdump中被定义为level 0,各个level记录文件放置于/var/lib/xfsdump/inventory中。
xfsdump的限制
- xfsdump只能备份已挂载的xfs文件系统。
- xfsdump必须使用root权限才能操作。
- xfsdump备份下来的数据只能由xfsrestore解析。
- xfsdump通过文件系统的UUID来分辨各个备份文件,因此不能备份两个具有相同UUID的文件系统。
常用参数
- -L session_label,Specifies a label for the dump session. It can be any arbitrary string up to 255 characters long,记录每次备份的session标签,并可以填写针对此文件系统的简易说明。
- -M label [ -M label ... ],Specifies a label for the first