本文是 i 春秋作家「xiehudie」表哥分享的技术文章,公众号旨在为大家提供更多的学习方法与技能技巧,文章仅供学习参考。本套Linux进阶教程共分为14章,欢迎大家前来系统学习。
前期回顾>>
第1章:访问命令行
第2章:从命令行管理文件
第3章:编辑、查看和编辑文本文件
第4章:管理用户和组
第5章:控制对文件的访问
第6章:控制对文件的访问
第7章:控制服务和守护进程
第8章:配置和保护SSH
第9章:分析和储存日志
第10章:管理网络
第11章:归档和传输文件
一、tar命令
创建备份和通过网络传输数据时,归档和压缩文件非常的有用。用来创建和使用备份存档的其中一个最早的最常见的命令也是tar命令。
通过tar命令,我们可以将大型文件集汇集成一个文件(存档)。tar存档是一个结构化的文件数据序列,其中含有每个文件和索引的元数据,以便可以提取某个单个文件,该存档可以使用gzip、bzip2或xz压缩方式进行压缩。
tar命令不仅能够列出存档内容,而且能将其文件提取到当前系统。以下是tar命令的常用选项、选项的长版本以及说明:
创建新存档时要使用的第一个选项为c选项,后跟f选项,接着是一个空格,然后是要创建的存档的文件名,最后应当添加到该存档中的文件和目录列表。存档会创建在当前目录中, 除非另外指定。以下是创建一个存档,其内容为用户主目录中的file1、file2和file3。
要使tar能够归档选定的文件,执行tar命令的我们必需要可以读取这些文件。比如说,为/etc文件夹及所有内容创建创建新存档需要root权限,因为只有root用户才能读取/etc目录的所有文件。非root用户可以创建/etc目录的存档,但是该存档将忽略用户没有读取权限的文件,并且将忽略用户没有读取和执行的目录。以下说明了以root用户身份创建了/roo且内容为/etc目录的tar存档:
t选项可以列出存档的内容,使用f选项,加上要查询的存档的名称,如下面所示:
tar存档通常应当提取到空目录中,以确保它不会覆盖任何现有的文件,当root用户提取存档时,tar命令会保留文件的原始用户和组所有权。如果普通用户使用tar提取文件,文件所有权将属于存档中提取文件的用户。以下说明了将/roo存档中文件恢复到/rootetcbackup目录:
默认情况下,从存档中提取文件时,将从存档内容中去除umask,要保留存档文件的权限,可在提取存档时使用p选项。tar命令支持三种压缩方式。tar命令支持三种不同的压缩方式,gzip压缩速度最快,历史最久,使用的也最广泛,能够跨发行版甚至跨平台使用。bzip2压缩创建的存档文件通常比gzip创建的文件小,但可用性不如gzip;而xz压缩方式相对较新,但通常提供可用方式中最佳的压缩率。最好使用单个顶级目录,其中可包含其他的目录和文件,以通过有序的方式来简化文件提取。使用下列选项之一来创建压缩的tar存档:-z或--gzip进行gzip压缩。
-j或--bzip2进行bzip2压缩
-J或-xz进行xz压缩
创建存档后,使用tf选项来验证存档的内容,在列出压缩文件的内容时,不必强制使用压代理选项。如下所示:
提取压缩的tar存档时,要执行的第一步是决定存档文件应提取到位置,然后创建并更改到目录目录。tar命令会判断之前使用的压缩方式,因此通常不需要使用在创建存档时所用的同一压缩选项。可以在tar命令中添加解压缩方式,如果这样做,则必须使用正确的解压缩类型选项,否则,tar会生成错误来指出选项中指定的解压缩类型与文件的解压缩类型不匹配。提取gzip压缩的存档:
提取bzip2压缩的存档
提取xz压缩的存档:
二、系统中安全的传输和同步文件
Openssh命令对于确保在远程上安全运行shell命令非常有用。Secure copy命令scp是openssh套件的一部分,可将文件从远程系统复制到本地系统或从本地系统复制到远程系统。此命令利用ssh服务器进行身份验证,并在数据传输之前对其进行加密。我们可以为所要复制的文件的源或目标指定一个远程位置,格式为[user@]host:/path。该参数的user@部分是可选的。如果不指定该部分,则使用我们当前的本地用户名,运行命令时,scp客户端将使用基于密钥的身份验证或以提示我们输入密码的方式向远程ssh服务器进行身份验证,就像ssh一样。如下图所示:
rsync命令是在系统之间安全复制文件的另一种方式。此工具采用的算法可通过仅同步已更改的文件部分来将复制的数据量最小化,它与scp的区别在于,如果两个服务器间的两个文件或目录相似,rsync将仅复制文件系统间的差异部分,而scp仍复制所有内容。rsync的一个优点是它能够在本地系统和远程系统之间安全而高效地复制文件,虽然首次目录同步的用时与复制操作大致相同,但之后的同步只需要通过网络复制差异部分,从而会大幅度加快更新的速度。以下是rsync -a启用的选项: