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 media object (for example, tape cartridge) written on the cor‐responding destination during the session. It can be any arbitrary string up to 255 characters long. Multiple media object labels can be specified, one for each destination,记录存储媒体的标签,并可以填写针对此存储媒体的简易说明。
  • -l level ,Specifies a dump level of 0 to 9. The dump level determines the base dump to which this dump is relative. The base dump is the most recent dump at a lesser level. A level 0 dump is absolute - all files are dumped. A dump level where 1 <= level <= 9 is referred to as an incremental dump. Only files that have been changed since the base dump are dumped. Subtree dumps(see the -s option below) cannot be used as the base for incremental dumps. 指定等级,有0-9十个等级,预设为0,即完整备份。
  • -f dest [ -f dest ... ],Specifies a dump destination.其后接产生的文件。
  • -I Displays the xfsdump inventory (no dump is performed). xfsdump records each dump session in an online inventory in /var/lib/xfsdump/inventory.

xfsdump预设仅支持文件系统的备份,并不支持特定目录的备份。

实践:使用xfsdump备份完整的文件系统

[root@bogon ~]# xfsdump -l 0 -L boot_all -M boot_all -f /tmp/boot.dump /boot

xfsdump: using file dump (drive_simple) strategy xfsdump: version 3.1.7 (dump format 3.0) - type ^C for status and control xfsdump: level 0 dump of bogon:/boot # 开始备份本机的/boot系统 xfsdump: dump date: Wed May 6 20:30:44 2020 # 备份时间 xfsdump: session id: f5faccf7-538c-4f2a-8ca6-d987fb7d833a # dump ID
xfsdump: session label: "boot_all" # session 标签 xfsdump: ino map phase 1: constructing initial dump list # 开始备份程序 xfsdump: ino map phase 2: skipping (no pruning necessary) xfsdump: ino map phase 3: skipping (only one dump stream) xfsdump: ino map construction complete xfsdump: estimated dump size: 151900864 bytes xfsdump: creating dump session media file 0 (media 0, file 0) xfsdump: dumping ino map xfsdump: dumping directories xfsdump: dumping non-directory files xfsdump: ending media file xfsdump: media file size 151575176 bytes xfsdump: dump size (non-dir files) : 151335512 bytes xfsdump: dump complete: 15 seconds elapsed xfsdump: Dump Summary: xfsdump: stream 0 /tmp/boot.dump OK (success) xfsdump: Dump Status: SUCCESS

[root@bogon ~]# ll /tmp/boot.dump

-rw-r--r--. 1 root root 151575176 May 6 20:30 /tmp/boot.dump

[root@bogon ~]# ll /var/lib/xfsdump/inventory/ total 16 -rw-r--r--. 1 root root 5760 May 6 20:31 e1e215d9-1606-472c-b78c-6a3c4ce8e8b1.StObj -rw-r--r--. 1 root root 312 May 6 20:31 f37a802e-3cde-49ea-8384-ed251e97f106.InvIndex -rw-r--r--. 1 root root 576 May 6 20:30 fstab

xfsdump将/boot整个文件系统备份下来并将备份的相关信息(文件系统/时间/session ID等)写入/var/lib/xfsdump/inventory中,给下次备份作为参考依据。

实践:使用xfsdump进行累计备份

[root@bogon ~]# xfsdump -I # 查看xfsdump的文件系统
file system 0:fs id:        f37a802e-3cde-49ea-8384-ed251e97f106session 0:mount point:    bogon:/bootdevice:        bogon:/dev/sda1time:        Wed May  6 20:30:44 2020session label:    "boot_all"session id:    f5faccf7-538c-4f2a-8ca6-d987fb7d833alevel:        0resumed:    NOsubtree:    NOstreams:    1stream 0:pathname:    /tmp/boot.dumpstart:        ino 69 offset 0end:        ino 1572967 offset 0interrupted:    NOmedia files:    1media file 0:mfile index:    0mfile type:    datamfile size:    151575176mfile start:    ino 69 offset 0mfile end:    ino 1572967 offset 0media label:    "boot_all"media id:    0ee84558-e516-489d-883b-aa02d42122cbxfsdump: Dump Status: SUCCESS
[root@bogon ~]# dd if=/dev/zero of=/boot/test.txt bs=1M count=10  # 创建测试数据
10+0 records in
10+0 records out
10485760 bytes (10 MB) copied, 0.20551 s, 51.0 MB/s
[root@bogon ~]# xfsdump -l 1 -L boot_2 -M boot_2 -f /tmp/boot.dump1 /boot  # 建立差异备份
[root@bogon ~]# ll /tmp/boot*    # 查看文件大小,dump1的文件大小就是刚刚创建的测试数据大小
-rw-r--r--. 1 root root 151575176 May  6 20:30 /tmp/boot.dump
-rw-r--r--. 1 root root  10510952 May  6 20:31 /tmp/boot.dump1
[root@bogon ~]# xfsdump -I
file system 0:fs id:        f37a802e-3cde-49ea-8384-ed251e97f106session 0:mount point:    bogon:/bootdevice:        bogon:/dev/sda1time:        Wed May  6 20:30:44 2020session label:    "boot_all"session id:    f5faccf7-538c-4f2a-8ca6-d987fb7d833alevel:        0resumed:    NOsubtree:    NOstreams:    1stream 0:pathname:    /tmp/boot.dumpstart:        ino 69 offset 0end:        ino 1572967 offset 0interrupted:    NOmedia files:    1media file 0:mfile index:    0mfile type:    datamfile size:    151575176mfile start:    ino 69 offset 0mfile end:    ino 1572967 offset 0media label:    "boot_all"media id:    0ee84558-e516-489d-883b-aa02d42122cbsession 1:mount point:    bogon:/bootdevice:        bogon:/dev/sda1time:        Wed May  6 20:31:30 2020session label:    "boot_2"session id:    d2d50506-1d65-429c-9267-909585f26594level:        1resumed:    NOsubtree:    NOstreams:    1stream 0:pathname:    /tmp/boot.dump1start:        ino 82 offset 0end:        ino 83 offset 0interrupted:    NOmedia files:    1media file 0:mfile index:    0mfile type:    datamfile size:    10510952mfile start:    ino 82 offset 0mfile end:    ino 83 offset 0media label:    "boot_2"media id:    b740ecdf-e3e2-49ca-a99d-fb6b765f64ab
xfsdump: Dump Status: SUCCESS

xfsrestore

xfsrestore restores filesystems from dumps produced by xfsdump. 使用xfsrestore复原备份文件。

常用参数

-I Causes the xfsdump inventory to be displayed (no restore is performed). 显示xfsdump清单,可查询备份数据,包括label与备份时间。

-f source [ -f source ... ] Specifies a source of the dump to be restored.后接备份文件。

-L session_label,Specifies the label of the dump session to be restored.

-s subtree,Specifies a subtree to restore. 后接特定的目录,只复原某一个文件或目录。

实践

[root@bogon ~]# xfsrestore -I  # 使用xfsrestore -I来查阅xfsdump的内容,与xfsdump -I输出相同
file system 0:fs id:        f37a802e-3cde-49ea-8384-ed251e97f106session 0:mount point:    bogon:/bootdevice:        bogon:/dev/sda1time:        Wed May  6 20:30:44 2020session label:    "boot_all"session id:    f5faccf7-538c-4f2a-8ca6-d987fb7d833alevel:        0resumed:    NOsubtree:    NOstreams:    1stream 0:pathname:    /tmp/boot.dumpstart:        ino 69 offset 0end:        ino 1572967 offset 0interrupted:    NOmedia files:    1media file 0:mfile index:    0mfile type:    datamfile size:    151575176mfile start:    ino 69 offset 0mfile end:    ino 1572967 offset 0media label:    "boot_all"media id:    0ee84558-e516-489d-883b-aa02d42122cbsession 1:mount point:    bogon:/bootdevice:        bogon:/dev/sda1time:        Wed May  6 20:31:30 2020session label:    "boot_2"session id:    d2d50506-1d65-429c-9267-909585f26594level:        1resumed:    NOsubtree:    NOstreams:    1stream 0:pathname:    /tmp/boot.dump1start:        ino 82 offset 0end:        ino 83 offset 0interrupted:    NOmedia files:    1media file 0:mfile index:    0mfile type:    datamfile size:    10510952mfile start:    ino 82 offset 0mfile end:    ino 83 offset 0media label:    "boot_2"media id:    b740ecdf-e3e2-49ca-a99d-fb6b765f64ab
xfsrestore: Restore Status: SUCCESS

简单复原level 0 的文件系统

[root@bogon ~]# xfsrestore -f /tmp/boot.dump -L boot_all /boot   # 将数据覆盖到/boot
[root@bogon ~]# xfsrestore -f /tmp/boot.dump -L boot_all /tmp/boot  # 另外复原一份数据在/tmp/boot
[root@bogon ~]# du -sm /boot /tmp/boot
155    /boot
145    /tmp/boot为何两者大小不一样?

[root@bogon ~]# diff -r /boot /tmp/boot Only in /boot: test.txt

直接复原的结果是:同名的文件被覆盖,新的文件被保留,所以在/boot中创建的测试数据不会因为复原而消失

dd & cpio

dd(dd可以读取磁盘装置的内容,然后将整个装置备份成一个文件)

dd if="input_file" of="output_file" bs="block_size" count="number"

  • input_file和out_file也可以是装置
  • bs为规划的一个block的大小,默认512bytes
  • count为bs的数量

实践:备份passwd文件

[root@bogon ~]# dd if=/etc/passwd of=/tmp/passwd.bak
4+1 records in
4+1 records out
2354 bytes (2.4 kB) copied, 0.000565697 s, 4.2 MB/s
[root@bogon ~]# ll /etc/passwd /tmp/passwd.bak
-rw-r--r--. 1 root root 2354 May  4 14:36 /etc/passwd
-rw-r--r--. 1 root root 2354 May  6 20:59 /tmp/passwd.bak

实践:备份/boot文件系统

[root@bogon ~]# dd if=/dev/sda1 of=/tmp/boot.img
2097152+0 records in
2097152+0 records out
1073741824 bytes (1.1 GB) copied, 22.4468 s, 47.8 MB/s
[root@bogon ~]# ll /tmp/boot.img
-rw-r--r--. 1 root root 1073741824 May  6 21:02 /tmp/boot.img

默认dd一个一个扇区读写,所以没用到的扇区也会被写入备份文件,所以文件会与磁盘相同大小,但是xfsdump只备份文件系统中使用到的部分。

cpio

cpio可以备份任何东西,包括装置设备文件。不过cpio不会主动寻找文件备份,因此一般配合find类等可以找到文件名的指令来告知cpio应该备份的数据在哪里。

常用指令

  • cpio -ovcB > [file|device] 备份
  • cpio -ivcdu < [file|device] 还原
  • cpio -ivct < [file|device] 察看

常用参数

备份会使用到的选项与参数:

  • -o :将数据 copy 输出到文件或装置上
  • -B :让预设的 Blocks 增加至 5120 bytes ,预设是 512 bytes

还原会使用到的选项与参数:

  • -i :将数据自文件或装置 copy 出系统当中
  • -d :自动建立目录,使用 cpio 所备份的数据内容不一定会在同一层目录中,因此必须要让 cpio 在还原时可以建立新目录
  • -u :自动的将较新的文件覆盖较旧的文件
  • -t :需配合 -i 选项,可用在查看以 cpio 建立的文件或装置的内容 一些可共享的选项与参数
  • -v :让储存的过程中文件名可以在屏幕上显示
  • -c :一种较新的 portable format 方式储存

实践

压缩
[root@bogon /]# find boot | cpio -ocvB > /tmp/boot.cpio
查看
[root@bogon /]# ll /tmp/boot.cpio
-rw-r--r--. 1 root root 161633280 May  6 21:11 /tmp/boot.cpio
[root@bogon /]# file /tmp/boot.cpio
/tmp/boot.cpio: ASCII cpio archive (SVR4 with no CRC)
解压缩
[root@bogon ~]# cpio -idvc < /tmp/boot.cpio 

鸟哥的备份策略

鸟哥的备份策略分为两大部分,一个是每日备份经常性变动的重要数据,一个是每周备份不常变动的信息,使用两个scripts分别实现:

  • 主机硬件:使用一个独立的文件系统存储备份数据,该文件系统挂载到/backup
  • 每日备份:MySQL数据库
  • 每周备份:/home、/etc、/var、/boot、/usr/local等目录
  • 自动处理:利用/etc/crontab提供自动备份服务
  • 异地备援:每月定期将数据分别刻录到光盘并使用网络传输到另一部主机上

每周备份scripts [设定备份目录(判断是否存在不存在就创建)→ 使用 cp 和 tar 将数据备份到设定的备份目录 ]

[root@study ~]# vi /backup/backupwk.sh
#!/bin/bash
# basedir:用来储存此脚本所预计备份的数据之目录(请独立文件系统)
basedir=/backup/weekly
PATH=/bin:/usr/bin:/sbin:/usr/sbin; export PATH
export LANG=C # 设定要备份的服务的配置文件,以及备份的目录
named=$basedir/named
postfixd=$basedir/postfix
vsftpd=$basedir/vsftp
sshd=$basedir/ssh
sambad=$basedir/samba
wwwd=$basedir/www
others=$basedir/others
userinfod=$basedir/userinfo
# 判断目录是否存在,若不存在则予以建立。
for dirs in $named $postfixd $vsftpd $sshd $sambad $wwwd $others $userinfod
do [ ! -d "$dirs" ] && mkdir -p $dirs
done # 1. 将系统主要的服务配置文件分别备份下来,同时备份 /etc 全部
cp -a /var/named/chroot/{etc,var} $named
cp -a /etc/postfix /etc/dovecot.conf $postfixd
cp -a /etc/vsftpd/*   $vsftpd
cp -a /etc/ssh/*   $sshd
cp -a /etc/samba/*   $sambad
cp -a /etc/{my.cnf,php.ini,httpd} $wwwd
cd /var/lib
tar -jpc -f $wwwd/mysql.tar.bz2  mysql
cd /var/www
tar -jpc -f $wwwd/html.tar.bz2  html cgi-bin
cd /
tar -jpc -f $others/etc.tar.bz2 etc
cd /usr/
tar -jpc -f $others/local.tar.bz2 local # 2. 关于使用者参数方面
cp -a /etc/{passwd,shadow,group} $userinfod
cd /var/spool
tar -jpc -f $userinfod/mail.tar.bz2 mail
cd /
tar -jpc -f $userinfod/home.tar.bz2 home
cd /var/spool
tar -jpc -f $userinfod/cron.tar.bz2 cron at [root@study ~]# chmod 700 /backup/backupwk.sh 

每日备份scripts [设定备份目录(不存在就创建) 使用tar将数据打包备份到指定目录]

[root@study ~]# vi /backup/backupday.sh
#!/bin/bash
basedir=/backup/daily/  # 用来储存此脚本所预计备份的数据之目录(请独立文件系统) 
PATH=/bin:/usr/bin:/sbin:/usr/sbin; export PATH
export LANG=C
basefile1=$basedir/mysql.$(date +%Y-%m-%d).tar.bz2
basefile2=$basedir/cgi-bin.$(date +%Y-%m-%d).tar.bz2
[ ! -d "$basedir" ] && mkdir $basedir # 1. MysQL (数据库目录在 /var/lib/mysql)
cd /var/lib
tar -jpc -f $basefile1 mysql
# 2. WWW 的 CGI 程序 (如果有使用 CGI 程序的话)
cd /var/www
tar -jpc -f $basefile2 cgi-bin [root@study ~]# chmod 700 /backup/backupday.sh 

自动备份

[root@study ~]# vi /etc/crontab
30 3 * * 0 root /backup/backupwk.sh
30 2 * * * root /backup/backupday.sh 

以上就是良许教程网为各位朋友分享的Linux相关知识。

linux 备份命令相关推荐

  1. linux cpio 备份系统,linux备份命令-cpio

    linux备份命令-cpio 首页 计算机相关 linux命令 linux备份命令-cpio cpio可以备份任何东西,包括设备设备文件.不过cpio 不会主动的去找文件来备份!一般来说, cpio ...

  2. Linux tar命令高级用法——备份数据

    Linux tar命令高级用法--备份数据 2015-12-31 Linux学习 Linux上有功能强大的tar命令,tar最初是为了制作磁带备份(tape archive)而设计的,它的作用是把文件 ...

  3. linux备份文件命令tar.gz,Linux系统tar命令备份数据

    作为Linux系统管理员,最经常使用的备份工具就是tar和cpio命令.前面在介绍备份介质时,已经使用了tar命令,此命令其实是一个文件打包命令,经常在备份文件的场合中使用.使用cpio命令进行数据备 ...

  4. cpio备份linux系统,linux cpio 备份命令

    cpio 命令[root@linux ~]# cpio -covB > [file|device] <==备份 [root@linux ~]# cpio -icduv < [file ...

  5. linux+tar高级用法,Linux tar命令高级用法——备份数据

    Linux上有功能强大的tar命令,tar最初是为了制作磁带备份(tape archive)而设计的,它的作用是把文件和目录备份到磁带中,然后从磁带中提取或恢复文件.现在我们可以使用tar来备份 ...

  6. linux tar 备份命令

    linux tar 备份命令 一 tar [-cxtzjvfpPN] 文件与目录 .... 参数: -c :建立一个压缩文件的参数指令(create 的意思): -x :解开一个压缩文件的参数指令! ...

  7. linux备份还原命令

    使用范围:1.可以作为系统还原点,还原到备份时的状态 2.系统完全损坏后无法启动,通过引导盘恢复 一.备份还原系统命令 方法一: 备份:tar cvpzf backup.tgz --exclude=/ ...

  8. Linux下 用cmp工具备份,Linux常用命令梳理——文件管理(一)

    由于本人目前仍是萌新一枚,所以<Linux常用命令梳理>系列仅依照个人目前掌握的知识,对一部分命令进行梳理,目的是为了对之前学到的知识进行巩固.当然了,如果机缘巧合被大家看到了,也欢迎各位 ...

  9. linux文件备份压缩命令,19个Linux备份压缩命令

    Linux ar命令 Linux ar命令用于建立或修改备存文件,或是从备存文件中抽取文件. ar可让您集合许多文件,成为单一的备存文件.在备存文件中,所有成员文件皆保有原来的属性与权限. 语法ar[ ...

  10. linux cp备份命令,Linux cp命令使用详解

    今天要和大家分享的Linux常用命令是cp命令,Linux cp命令常常被用于复制文件或目录,如同时指定两个以上的文件或目录,且后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此 ...

最新文章

  1. ISME:南土所梁玉婷组-不同气候条件下微生物代谢及残体介导施肥对土壤有机碳的影响...
  2. CSS布局奇技淫巧:各种居中
  3. IOS15瀑布流的使用
  4. 无法安装64位版本的office,因为在您的PC上找到了以下32位程序:microsoft visio professional 2013
  5. 10、什么是WEB端
  6. Android处理键盘事件的小例子
  7. python嵌入shell代码_小白进!嵌入式开发如何快速入门?
  8. 某公司的openstack实施招聘要求
  9. 大端小端(Big- Endian和Little-Endian)
  10. Atitit  技术经理职责与流程表总结
  11. java中国象棋规则_Java实践(十二)——中国象棋
  12. Linux内存映射实现
  13. c++中所有权是什么意思_产品所有权如何在现实世界中发挥作用
  14. HTML龙卷风特效代码
  15. Error running ‘Tomcat8.5‘ port out of range-1 (moments ago)
  16. 计算机arp 各命令,ARP命令参数详解
  17. php 随机字符串函数,PHP 生成随机字符串的方法函数
  18. 微观经济学之供给与需求--第一章第二章
  19. python初学者看什么书-关于 Python 的经典入门书籍有哪些?
  20. Java实现excel大数据量导入

热门文章

  1. QT绘制同心扇形(Paintevent实现)
  2. QT制作动画收缩效果
  3. python可以做exe文件吗_手动制作python的exe可执行程序
  4. android权限字符串,android-打开失败的EACCES(权限被拒绝)
  5. 最新友情链接交易平台源码,友链源码,友情链接,友链平台仿alivv爱链网源码下载
  6. unix操作系统的特点
  7. Oracle数据库的学习
  8. 学生选课管理系统php,学生选课管理系统(全源代码.doc
  9. python简明教程_02
  10. 同济大学 线性代数 第六版 pdf_同济大学版工程数学 线性代数 第六版 课本