Linux运维之系统中的文件和目录的远程传输及归档,压缩和解压命令

一、实验环境(rhel7.0版本)

主机环境:rhel7.0

各主机信息

主机名IP
server172.25.254.1
desktop172.25.254.2

 

二、使用scp进行文件或目录的远程传输

 

scp                  缺点:速度慢,默认忽略文件属性

 

 1、文件的传输

 

(1)文件的传输方式一——上传的方式

scp [-p] [-l 速率] file username@ip:/dir      以上传的方式进行复制文件(dir为绝对路径,file可以不为绝对路径)

选项与参数:
-p:同步权限
-l:可以限制传输的速率,单位为 Kbits/s,例如 [-l 800] 代表传输速率为 100Kbytes/s

 

【1】、不加-p参数

 

server虚拟机

 

desktop虚拟机

 

【2】、加-p参数

 

server虚拟机

 

desktop虚拟机

 

(2)文件的传输方式二——下载的方式

scp [-p] [-l 速率] username@ip:file dir       以下载的方式进行复制文件(dir为绝对路径,file也为绝对路径)

选项与参数:
-p:同步权限
-l:可以限制传输速率,单位为 Kbits/s,例如 [-l 800] 代表传输速率为 100Kbytes


测试方法同(1)

 

 2、目录的传输(目录本身的权限,默认同步)

 

(1)目录的传输方式一——上传的方式

  

scp [-pr] [-l 速率] dir1 username@ip:/dir2  以上传的方式进行复制目录及其目录中的文件(dir1为绝对路径,dir2为绝对路径)

选项与参数:
-p:同步权限
-r:同步目录
-l:可以限制传输速率,单位为 Kbits/s,例如 [-l 800] 代表传输速率为 100Kbytes

 

【1】、不加-r参数

 

server虚拟机

 

【2】、加-r参数

 

server虚拟机

 

desktop虚拟机

  

 【3】、加-p参数

 

server虚拟机

 

desktop虚拟机

 

(2)目录的传输方式二——下载的方式

 

scp [-pr] [-l 速率] username@ip:dir1 dir2      以下载的方式进行复制及其目录中的文件(dir1为绝对路径,dir2为绝对路径)

选项与参数:
-p:同步权限
-r:同步目录
-l:可以限制传输速率,单位为 Kbits/s,例如 [-l 800] 代表传输速率为 100Kbytes

 

测试方法同(1)

 

三、使用rsync进行文件或目录的远程传输

rsync        远程同步,优点:速度快;缺点:默认忽略文件属性,链接文件,设备文件

 

1、文件的传输

 

(1)文件的传输方式一——上传的方式

 

rsync 参数 file username@ip:/dir     (dir为绝对路径,file可以不为绝对路径)

参数:
-p  --perms:同步权限
-o  --owner:同步拥有者
-g  --group:同步所属组
-t  --times:同步时间戳      
-l  --links:同步链接文件  链接文件的创建:ln  -s   /mnt/westos/file1 /mnt/westos/westos1(/mnt/westos/westos1文件指向/mnt/westos/file1文件)
-D  --devices:同步设备文件(例如/dev/pts,该文件夹中的所有文件都是设备文件)
-a  --archive:归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD

-v:查看模式,可以列出更多的信息,包括镜像的文件名等
-q:与 -v 相反,安静模式,略过正常信息,只显示错误信息
-u:仅更新(update),若目标文件较新,则保留新闻件不会覆盖
-I:忽略更新时间(mtime)的属性,文件比对上会比较快速
-z:在数据传输时,加上压缩的参数
-e:使用的协议,例如使用 ssh 通到,则 -e ssh

 

【1】、加-p参数     

 

server虚拟机

 

desktop虚拟机

   

【2】、加-o参数

 

server虚拟机

 

desktop虚拟机

   

【3】、加-g参数

 

server虚拟机

 

desktop虚拟机

   

【4】、加-t参数

 

server虚拟机

 

desktop虚拟机

 

【5】、加-l参数

 

不加-l参数的情况

 

server虚拟机

 

desktop虚拟机

 

加-l参数的情况

 

server虚拟机

 

desktop虚拟机

 

【6】、加-D参数

 

不加-D参数的情况

 

server虚拟机

 

desktop虚拟机

 

加-D参数的情况

 

server虚拟机

 

desktop虚拟机

 

【7】、加-a参数

 

server虚拟机

 

desktop虚拟机

 

(2)文件的传输方式二——下载的方式

rsync 参数 username@ip:/dir  dir    (dir为绝对路径,dir也必须为绝对路径)

参数:
-p  --perms:同步权限
-o  --owner:同步拥有者
-g  --group:同步所属组
-t  --times:同步时间戳      
-l  --links:同步链接文件  链接文件的创建:ln  -s   /mnt/westos/file1 /mnt/westos/westos1(/mnt/westos/westos1文件指向/mnt/westos/file1文件)
-D  --devices:同步设备文件(例如/dev/pts,该文件夹中的所有文件都是设备文件)
-a  --archive:归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD

-v:查看模式,可以列出更多的信息,包括镜像的文件名等
-q:与 -v 相反,安静模式,略过正常信息,只显示错误信息
-u:仅更新(update),若目标文件较新,则保留新闻件不会覆盖
-I:忽略更新时间(mtime)的属性,文件比对上会比较快速
-z:在数据传输时,加上压缩的参数
-e:使用的协议,例如使用 ssh 通到,则 -e ssh

 

2、目录的传输(目录本身的权限,默认不同步,当加-p参数,同步目录中文件的权限时,目录本身的权限也就同步了)

 

(1)文件的传输方式一——上传的方式

rsync 参数 file username@ip:/dir     (dir为绝对路径,file可以不为绝对路径)

参数:
-r  --recursive:同步目录
-p  --perms:同步权限
-o  --owner:同步拥有者
-g  --group:同步所属组
-t  --times:同步时间戳      
-l  --links:同步链接文件  链接文件的创建:ln  -s   /mnt/westos/file1 /mnt/westos/westos1(/mnt/westos/westos1文件指向/mnt/westos/file1文件)
-D  --devices:同步设备文件(例如/dev/pts,该文件夹中的所有文件都是设备文件)
-a  --archive:归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD

-v:查看模式,可以列出更多的信息,包括镜像的文件名等
-q:与 -v 相反,安静模式,略过正常信息,只显示错误信息
-u:仅更新(update),若目标文件较新,则保留新闻件不会覆盖
-I:忽略更新时间(mtime)的属性,文件比对上会比较快速
-z:在数据传输时,加上压缩的参数
-e:使用的协议,例如使用 ssh 通到,则 -e ssh

 

   【1】、 -r参数

 

不加-r参数的情况

 

server虚拟机

 

desktop虚拟机

 

加-r参数的情况

 

server虚拟机

 

desktop虚拟机

 

【2】、剩下参数的测试,同1中文件的传输中的测试

 

(2)文件的传输方式二——下载的方式

rsync 参数 username@ip:/dir1 dir2    (dir1为绝对路径,dir2也必须为绝对路径)

参数:
-r  --recursive:同步目录
-p  --perms:同步权限
-o  --owner:同步拥有者
-g  --group:同步所属组
-t  --times:同步时间戳      
-l  --links:同步链接文件  链接文件的创建:ln  -s   /mnt/westos/file1 /mnt/westos/westos1(/mnt/westos/westos1文件指向/mnt/westos/file1文件)
-D  --devices:同步设备文件(例如/dev/pts,该文件夹中的所有文件都是设备文件)
-a  --archive:归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD

-v:查看模式,可以列出更多的信息,包括镜像的文件名等
-q:与 -v 相反,安静模式,略过正常信息,只显示错误信息
-u:仅更新(update),若目标文件较新,则保留新闻件不会覆盖
-I:忽略更新时间(mtime)的属性,文件比对上会比较快速
-z:在数据传输时,加上压缩的参数
-e:使用的协议,例如使用 ssh 通到,则 -e ssh

 

3、其他案例

 

【1】、将 /etc 的数据备份到 /tmp 下面:

[root@server ~]# rsync -av /etc/ /tmp/
...(前面省略)...
sent 29670756 bytes  received 41864 bytes  19808413.33 bytes/sec
total size is 29522475  speedup is 0.99
# 第一次运行时会花比较长的时间,因为首次建立需要备份所有的文件。如果再次备份呢?

[root@server ~]# rsync -av /etc/ /tmp/
sending incremental file list

sent 65392 bytes  received 331 bytes  131446.00 bytes/sec
total size is 29522475  speedup is 449.20
# 比较一下两次 rsync 的传输与接收数据量
# 传输的数据很少,因为再次比对,仅有差异的文件会被复制

 

【2】、利用 student 的身份登录 172.25.254.2 将用户主目录复制到本机 /tmp

[root@server ~]# rsync -av -e ssh student@172.25.254.2:~ /tmp
student@172.25.254.2's password:
...(前面省略)...
sent 64450 bytes  received 342 bytes  43194.67 bytes/sec
total size is 38322284  speedup is 591.47

[root@server ~]# ll -d /tmp/student/
drwx------. 5 student student 4096 Jun 12 10:34 /tmp/student/
# 瞧,这样就做好备份了,很简单吧。

 

四、常见的压缩命令——gzip、bzip2、xz

 

下面列出几个常见的压缩文件扩展名:

  1. *.Z                       compress程序压缩的文件;
  2. *.zip                     zip程序压缩的文件;
  3. .gz                       gzip程序压缩的文件;
  4. .bz2                     bzip2程序压缩的文件;
  5. .xz                        xz程序压缩的文件;
  6. .tar                       tar程序打包的文件,并没有压缩过;
  7. .tar.gz                  tar程序打包的文件,并且经过gzip的压缩;
  8. .tar.bz2                tar程序打包的文件,并且经过bzip2的压缩;
  9. .tar.xz                   tar程序打包的文件,并且经过xz的压缩;

 

1、gzip,zcat/zmore/zless/zgrep

gzip可以说是应用最广的压缩命令了,目前gzip可以解开compress、zip和gzip的软件所压缩的文件。至于gzip所建立的文件

为*.gz。让我们来看看这个命令的用法:

 

(1)gzip命令

 

gzip [-cdvt#] 文件名

选项与参数:
-c:将压缩的数据输出到屏幕上,可通过数据流重定向来处理;
-d:解压缩的参数;
-v:可以显示出原文件/压缩文件的压缩比等信息;
-t:可以用来检测一个压缩文件的一致性,看看文件有无错误;
-#:为数字的意思,代表压缩等级,-1最快,但是压缩比最差,-9最慢,但是压缩比最好,默认是-6

 

前提环境:将/etc/passwd文件拷贝到/root/Desktop目录下

[root@server1 Desktop]# cp /etc/passwd /root/Desktop/
[root@server1 Desktop]# ls
passwd

 

1、gzip passwd        压缩passwd这个文件

当使用gzip进行压缩时,在默认的状态下原本的文件会被压缩称为.gz后缀的文件,原文件也不再存在了。

 

2、gzip -d passwd.gz      解压缩passwd.gz这个压缩文件

当使用gzip -d进行解压缩时,会将原来的.gz文件删除,恢复到原本的passwd文件

 

3、gzip -v passwd        压缩passwd这个文件,并将压缩比在屏幕上进行显示

 

4、gzip -t passwd.gz       检测passwd.gz这个文件的正确性

检测结果没有任何输出时,代表该压缩文件是正确的。

 

5、gzip -9 -c passwd > passwd.gz        将passwd这个文件用最佳的压缩比压缩,并保留原本的文件

 

(2)zcat/zmore/zless命令

cat/more/less可以使用不同的方式来读取纯文本文件,那个zcat/zmore/zless则可以对应于cat/more/less的方式来读取纯文本

文件被压缩后的压缩文件。由于gzip命令主要想用来替换compress,所以不但compress的压缩文件可以使用gzip解开,同

时zcat这个命令可以同时读取compress与gzip的压缩文件。

 

1、zcat passwd.gz       读取passwd.gz这个压缩文件中的内容

 

(3)zgrep命令

 

如果你还想要从文字压缩文件当中找数据的话,可以通过zgrep来查找关键字,而不需要将压缩文件解开才以grep进行,这对查询备份中的文本文件数据相当有用。

 

1、zgrep -n student passwd.gz     从passwd.gz这个压缩文件中找到包含student关键字的行,并输出行号

 

2、bzip2,bzcat/bzmore/bzless/bzgrep

若说gzip是为了替换compress并提供更好的压缩比而成立的,那么bzip2则是为了替换gzip并提供更佳的压缩比而来。bzip2真是很不错的东西,这玩意的压缩比竟然比gzip还要好,至于bzip2的用法几乎与gzip相同,看看下面的用法吧!

 

(1)bzip2

bzip [-cdvt#kz] 文件名

选项与参数:
-c:将压缩的过程产生的数据输出倒屏幕上;
-d:解压缩的参数;
-v:可以显示出原文件/压缩文件的压缩比等信息;
-t:可以用来检测一个压缩文件的一致性,看看文件有无错误;
-#:与gzip同样的,都是计算压缩比的参数,-9最佳,-1最快;
-k:保留原始文件,而不会删除原始的文件;
-z:压缩的参数()默认值,可以不加;

 

1、bzip2 passwd        压缩passwd这个文件

当使用bzip2进行压缩时,在默认的状态下原本的文件会被压缩称为.bz2后缀的文件,原文件也不再存在了。

 

2、bzip2 -d passwd.bz2      解压缩passwd.bz2这个压缩文件

当使用bzip2 -d进行解压缩时,会将原来的.bz2文件删除,恢复到原本的passwd文件

 

3、bzip2 -v passwd        压缩passwd这个文件,并将压缩比在屏幕上进行显示

 

4、bzip2 -t passwd.bz2       检测passwd.bz2这个文件的正确性

检测结果没有任何输出时,代表该压缩文件是正确的。

 

5、bzip2 -9 -c passwd > passwd.bz2        将passwd这个文件用最佳的压缩比压缩,并保留原本的文件

 

6、bzip2 -k passwd      压缩passwd文件,但是保留原文件。这条命令的效果同上一条命令

 

(2)bzcat/bzmore/bzless

 

1、bzcat passwd.bz2      查看passwd.bz2这个压缩文件的内容

 

(3)bzgrep

 

1、bzgrep -n student passwd.bz2      从passwd.bz2这个压缩文件中找到student所在的行,并显示行号

 

 

看上面的范例,你会发现bzip2连选项与参数都跟gzip一模一样,只是扩展名由.gz变成.bz2而已。也可以发现bzip2的压缩率确实比gzip要好些,不过,对于大容量文件来说,bzip2压缩时间会花比较久,至少比gzip要久的多,这没办法,要由更多可用容量,就要花费相对应的时间。

 

3、xz,xzcat/xzmore/xzless/xzgrep

虽然bzip2已经具有很棒的压缩比,不过显然某些自由软件开发者还不满足,因此后来还推出了xz这个压缩比更高的软件。这个软件的用法也跟gzip/bzip2几乎一模一样。那我们就来看一看。

 

(1)xz

xz [-cdvt#lk] 文件名

选项与参数:
-c:将压缩的过程产生的数据输出倒屏幕上;
-d:就是解压缩;
-v:可以显示出原文件/压缩文件的压缩比等信息;
-t:测试压缩文件的完整性,看有没有错误;
-#:同样的,也有较佳的压缩比的意思
-l:列出压缩文件的相关信息;
-k:保留原本的文件不删除;

 

1、xz passwd        压缩passwd这个文件

当使用xz进行压缩时,在默认的状态下原本的文件会被压缩称为.xz后缀的文件,原文件也不再存在了。

 

2、xz -d passwd.xz      解压缩passwd.xz这个压缩文件

当使用xz -d进行解压缩时,会将原来的.xz文件删除,恢复到原本的passwd文件

 

3、xz -v passwd        压缩passwd这个文件,并将压缩比在屏幕上进行显示

 

4、xz -t passwd.xz      检测passwd.xz这个文件的正确性

检测结果没有任何输出时,代表该压缩文件是正确的。

 

5、xz -9 -c passwd > passwd.xz       将passwd这个文件用最佳的压缩比压缩,并保留原本的文件

 

6、xz -k passwd      压缩passwd文件,但是保留原文件。这条命令的效果同上一条命令

 

7、xz -l passwd.xz      查看passwd.xz这个压缩文件的详细信息

 

(2)xzcat/xzmore/xzless

 

1、xzcat passwd.xz     查看passwd.xz这个压缩文件的内容

 

(3)xzgrep

 

1、bxzgrep -n student passwd.xz      从passwd.xz这个压缩文件中找到student所在的行,并显示行号

 

 

xz这个压缩比真的好太多太多,不过,xz最大的问题是时间太久了。它的运算时间真的比gzip久很多。

所以,如果你不觉得时间是你的成本考虑,那么使用xz会比较好。如果时间是你的重要成本,那么gzip恐怕是比较合适的压缩软件。

 

五、打包命令——tar(其中的参数加不加-都可以)

前面提到的gzip、bzip2、xz命令大多仅能针对但以稳健来进行压缩,虽然gzip、bzip2、xz也能够针对目录来进行压缩,不过,这三个命令对目录的压缩指的是将目录内的所有文件【分别】进行压缩的操作。而不像在Windows的系统,可以使用WinRAR这一类的压缩文件来将好多数据包成一个文件的样式。

tar命令可以将多个目录或文件打包成一个大文件,同时还可以通过gzip、bzip2、xz的支持,将该文件同时进行压缩。

 

tar [-z|-j|-J] [-cv] [-f 待建立的文件名] filename...   <==打包与压缩
tar [-z|-j|-J] [-tv] [-f 既有的tar文件名]           <==查看文件名
tar [-z|-j|-J] [-xv] [-f 既有的tar文件名] [-C 目录]  <==解压缩

选项与参数:
-c:建立打包文件,可搭配-v来查看过程中被打包的文件名(filename);
-t:查看打包文件的内容含有哪些文件名,重点在查看【文件名】;
-x:解包或解压缩功能,可以搭配-C(大写)在特定目录解压,特别留意的是,-c、-t、-x不可同时出现在一串命令行中;
-z:通过gzip的支持进行压缩/解压所L此时文件名最好为*.tar.gz;
-j:通过bzip2的支持进行压缩/解压所L此时文件名最好为*.tar.bz2;
-J:通过xz的支持进行压缩/解压所L此时文件名最好为*.tar.xz,特别流以,-z、-j、-J不可以同时出现在一串命令行中;
-v:在压缩/解压所的过程中,将正在处理的文件名显示出来,即显示过程;
-f filename:-f后面要立刻接要被处理的文件名,建议-f单独写一个选项。(比较不会忘记);
-C 目录:这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项;
-p(小写):保留备份数据的原本权限与属性,常用于备份(-c)重要的配置文件;
-P(大写):保留绝对路径,亦即允许备份数据中含有根目录存在之意;
--exclude=FILE:在压缩的过程中,不要将FILE打包


tar -r filename 归档文件名称(以.tar结尾的包)          添加文件到归档文件中
tar --get filename 归档文件名称(以.tar结尾的包)       解档归档文件中的指定文件
tar --delete filename 归档文件名称(以.tar结尾的包)    删除归档文件中的指定文件

 

1、单纯的打包命令tar

 

1、tar cf etc.tar /etc     将/etc目录中的文件进行归档,归档之后的包叫做etc.tar


 

2、tar cvf etc.tar /etc      将/etc目录下的文件进行归档,归档之后的包叫做etc.tar,并显示归档的过程

从上面的结果中,我们会看到有一行错误提示,这行错误提示是什么意思呢?我们在下条命令中进行解释。

 

3、tar tf etc.tar             查看etc.tar包中的文件

从上面的数据中,我们可以发现一件有趣的事情,那就是每个文件名都没了根目录。这也就是上一个例子中出现的那个警告信息【tar:Removing  leading  '/'  from  member  names】(删除了文件名开头的‘/’)所告知的情况。

那么为什么要去掉根目录?主要是为了安全。我们使用tar备份的数据可能会需要解压缩回来使用,在tar所记录的文件名(就是我们刚刚使用tar  tf 看到的文件名)那就是解压缩后的时即文件名。如果拿掉了根目录,假设你将备份数据在/tmp中解开,那么解压缩的文件名就会变成【/tmp/etc/xxx】。如果没有去掉根目录,解压缩后的文件名就会是绝对路径,即解压缩后的数据一定会被放置倒/etc/xxx去,如此一来,你的原本的/etc下面的数据,就会被备份数据所覆盖。

 

4、tar tvf etc.tar             查看etc.tar包中的文件,并显示其中文件的详细信息

 

如果你想确定你就是需要备份根目录到tar的文件中,那可以用-P(大写)这个选项,请看下面的例子分析

 

5、tar rf etc.tar filename/dirname     将westos文件放入etc.tar包中(注意:相当于往包中复制了一份文件/目录,原来的文件/目录依然存在)


 

6、tar f etc.tar --get filename/dirname   从包etc.tar中解档出文件/目录(注意:相当于复制了一份文件/目录出来,包中的文件/目录依然存在)

 

7、tar f etc.tar --delete filename/dirname     从包etc.tar中删除文件或目录

 

8、tar xf etc.tar          解压包etc.tar到当前文件夹(原来的包依然存在)

 

9、tar xf etc.tar -C /mnt      解压包etc.tar到/mnt文件夹下(原来的包依然存在)


 

9、tar xvf etc.tar -C /mnt              解压包etc.tar到/mnt文件夹下,并显示过程


 

2、打包命令tar与压缩解压命令(gzip、bzip2、xz)的结合

 

zip命令gzip命令bzip2命令xz命令
zip -r xxx.tar.zip xxx.targzip  xxx.tarbzip2  xxx.tar  xz  xxx.tar  
unzip  xxx.tar.zipgunzip  xxx.tar.gzbunzip2  xxx.tar.bz2unxz  xxx.tar.xz
 归档和压缩一步完成;解档和解压一步完成

归档和压缩一步完成;

解档和解压一步完成

归档和压缩一步完成;解档和解压一步完成
 tar zcf xxx.tar.gz  /xxxtar jcf xxx.tar.bz2  /xxxtar Jcf xxx.tar.xz  /xxx
 tar zxf xxx.tar.gztar jxf xxx.tar.bz2tar Jxf xxx.tar.xz

 

1、zip -r etc.tar.zip etc.tar    将包etc.tar通过zip的方式压缩为etc.tar.zip(需要注意的是:压缩之后,etc.tar包仍然存在,即会存在两个包——etc.tar包和etc.tar.zip压缩包)   

         

 

2、unzip etc.tar.zip    解压包etc.tar.zip到当前目录(需要注意的是,解压之后,etc.tar.zip压缩包仍然存在,即会存在两个包——etc.tar.zip压缩包和etc.tar包)


 

3、gzip etc.tar    将包etc.tar通过gzip的方式压缩成etc.tar.gzip(需要注意的是:压缩之后,包etc.tar不会存在了,即存在一个包——etc.tar.gzip压缩包)

 

4、gunzip etc.tar.gz      将包etc.tar.gz通过gunzip的方式解压到当前目录(需要注意的是:解压之后,etc.tar.gz压缩包就不会存在了,即存在一个包——etc.tar)


 

5、bzip2 etc.tar     将包etc.tar通过bzip2的方式压缩成etc.tar.bz2(需要注意的是:压缩之后,包etc.tar不会存在了,即存在一个包——etc.tar.bz2压缩包)


 

6、bunzip2 etc.tar.bz2    将包etc.tar.bz2通过bunzip2的方式解压到当前文件夹(需要注意的是:解压之后,etc.tar.bz2压缩包就不会存在了,即存在一个包——etc.tar)

 

7、xz etc.tar          将包etc.tar通过xz的方式压缩成etc.tar.xz(需要注意的是:压缩之后,包etc.tar不会存在了,即存在一个包——etc.tar.xz压缩包)


 

8、unxz etc.tar.xz     将包etc.tar.xz通过unxz的方式解压到当前目录(需要注意的是:解压之后,etc.tar.xz压缩包就不会存在了,即存在一个包——etc.tar)


 

9、tar zcf etc.tar.gz /etc     将/etc目录中的所有文件压缩成etc.tar.gz


 

10、tar zxf etc.tar.gz        将etc.tar.gz解压到当前目录(需要注意的是:解压之后,原来的压缩包依然存在,即存在两个东西——etc目录和etc.tar.gz压缩包)


 

11、tar jcf etc.tar.bz2 /etc     将/etc目录中的所有文件压缩成etc.tar.bz2


 

12、tar jxf etc.tar.bz2      将etc.tar.bz2解压到当前目录(需要注意的是:解压之后,原来的压缩包依然存在,即存在两个东西——etc目录和etc.tar.bz2压缩包)


 

13、tar Jcf etc.tar.xz /etc   将/etc目录中的所有文件压缩成etc.tar.xz


 

14、tar Jxf etc.tar.xz      将etc.tar.xz解压到当前目录(需要注意的是:解压之后,原来的压缩包依然存在,即存在两个东西——etc目录和etc.tar.xz压缩包)

 

 

15、time tar Jcf etc.tar.xz /etc   显示压缩的时间,将/etc目录中的所有文件压缩成etc.tar.xz

多了time会显示程序运行的时间,看real就好了,花去了18.289s

 

仅解开单一文件的方法

刚刚我们上面解压缩都是将整个打包文件的内容全部解开,想象一个情况,如果我只想要解开打包文件内的其中一个文件而已,那该如何做?很简单,你只要使用-jtf找到你要的文件名,然后将该文件名解开即可,我们用下面的例子来说明一下:

[root@server1 Desktop]# ls
etc  etc.tar  etc.tar.bz2  etc.tar.gz  etc.tar.xz  etc.tar.zip  file
[root@server1 Desktop]# rm -rf etc
[root@server1 Desktop]# ls
etc.tar  etc.tar.bz2  etc.tar.gz  etc.tar.xz  etc.tar.zip  file

1、先找到我们要的文件名,假设解开passwd文件。
[root@server1 Desktop]# tar Jtf etc.tar.xz | grep passwd
etc/passwd
etc/passwd-
etc/security/opasswd
etc/pam.d/passwd

2、将该文件解开
[root@server1 Desktop]# tar Jxf etc.tar.xz etc/passwd
[root@server1 Desktop]# ls
etc  etc.tar  etc.tar.bz2  etc.tar.gz  etc.tar.xz  etc.tar.zip  file
[root@server1 Desktop]# ls etc
passwd

 

打包某目录,但不含该目录下的某些文件之做法

假设我们想要打包/etc  /root这几个重要目录,但却不想打包/root/etc*开头的文件,因为该文件都是刚刚我们才建立的备份文件。而且假设这个新的打包文件要放置成为/root/system.tar.bz2,当然这个文件自己不要打包自己(因为这个文件放在/root下面),此时我们可以通过--exclude的帮忙,这个exclude就是不包含的意思,所以你可以这样做:

 

仅备份比某个时刻还要新的文件

某些情况下,你会想要备份新的文件而已,并不想要备份旧文件,此时,--new-mtime这个选项就很重要。其实有两个选项,一个是【--newer】,另一个是【--newer-mtime】,这两个选项有何不同。

  1. 当使用--newer时,表示后续的日期包含mtime和ctime;
  2. 而--newer-mtime则仅是mtime而已。
1、先由find找出比/etc/passwd文件还要新的文件
[root@server1 ~]# find /etc/ -newer /etc/passwd -type f
/etc/group
/etc/gshadow
/etc/shadow
/etc/sysconfig/network
/etc/tuned/active_profile
/etc/sudoers

#此时会显示出比/etc/passwd这个文件的mtime还要新的文件
[root@server1 ~]# ll /etc/passwd
-rw-r--r--. 1 root root 2441 May 17 19:52 /etc/passwd

2、好了,那么使用tar来进行打包吧!日期为上面看到的2019-05-17 19:52
[root@server1 ~]# tar jcf etc.newer.than.passwd --newer-mtime="2019-05-17 19:52"
tar: Removing leading `/' from member names

3、显示出文件即可
[root@server1 ~]# tar jtf etc.newer.than.passwd | grep -v '/$'
etc/group
etc/group-
etc/gshadow
etc/gshadow-
etc/passwd
etc/shadow
etc/sudoers
etc/sysconfig/network
etc/tuned/active_profile

 

基本名称:tarfile、tarball?

另外值的一提的是,tar打包出来的文件有没有进行压缩所得到的文件称呼不同。如果仅是打包而已,就是【tar  -cv  -f  file.tar】而已,这个文件我们称呼为tarfile,如果还有进行压缩的支持,例如【tar  -jcv -f  file.tar】而已,我们就称呼为tarball。

 

特殊应用:利用管道命令与数据流

在tar的使用中,有一种方法最特殊,那就是通过标准输入输出的数据流重定向,以及管道命令的方式。将待处理的文件一边打包一边解压所到目标目录。下面来看一个例子:

[root@server1 ~]# ls
anaconda-ks.cfg  etc.newer.than.passwd  Pictures        Videos
Desktop          firstboot-screenshots  Public
Documents        initial-setup-ks.cfg   system.tar.bz2
Downloads        Music                  Templates
[root@server1 ~]# cd /mnt/
[root@server1 mnt]# tar jcf - /root/ | tar jxf -
tar: Removing leading `/' from member names
[root@server1 mnt]# ls root/
anaconda-ks.cfg  etc.newer.than.passwd  Pictures        Videos
Desktop          firstboot-screenshots  Public
Documents        initial-setup-ks.cfg   system.tar.bz2
Downloads        Music                  Templates

#这个操作有点像是cp -r /root /mnt,依旧是有其用途的。
#要注意的地方在于输出文件变成-而输入文件也变成-又有一个|存在
#这分别代表standard output、standard inout与管道命令。
#简单的想法中,你可以将-想成是内存中的一个设备(缓冲区)

在上面的例子中,我们想将/root下面的数据只解复制到目前所再的路径,也就是/mnt下面,但是又觉得cp -r有点麻烦,那么就直接以这个打包的方式来打包,其中,命令里面的-就表示这个被打包的文件,由于我们不想让中间文件存在,所以就以这个方式来进行复制的操作。

 

解压缩后的SELinux问题

如果因为某些缘故,你的系统必须要以备份的数据来恢复到原本的系统中,那么要特别注意恢复后,系统的SELinux问题,尤其是在系统文件上面,例如/etc下面的文件,在这里,你只要先知道SELinux的权限问题可能会让你的系统无法读写某些配置文件内容,导致影响到系统的正常使用。

这个问题很常见(明明使用单人模式去操作系统时,看起来一切正常,但就是无法顺利登录),大部分原因就是/etc/shadow这个密码文件的SELinux类型在还原时被更改了,导致系统的登录程序无法顺利的读取它,才造成无法登录的窘境。

那如果处理?简单的处理方式有这几个:

  1. 通过各种可行的恢复方式登录系统,然后修改/etc/selinux/config文件,将SELinux变成permissive模式,重新启动系统就正常了;
  2. 在第一次恢复系统后,不要立即重新启动,先使用 restoreconn  -Rv  /etc自动修复一下SELinux的类型即可
  3. 通过各种可行的恢复方式登录系统,建立/.autorelabel文件,重新启动后系统会自动修复SELinux的类型,并且又会再次重新启动之后就正常了。

 

六、查看文件或目录的大小

 

1、文件

 

(1)ll 

 

2)du -sh filename

 

2、目录

 

(1)ll 

 

2)du -sh dir

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值