用户
搜索

该用户从未签到

i春秋-脚本小子

Rank: 2

8

主题

8

帖子

164

魔法币
收听
0
粉丝
2
注册时间
2020-9-9
发表于 2021-10-18 16:36:16 02667
本篇文章作者邪色蝴蝶,本篇文章参与i春秋作家连载计划所属邪色蝴蝶个人,未经许可,禁止转载。

0X00:前言
各位表哥们,大家好,这是我连载的第十一篇文章,有不足之处请大家多多指出。
本篇是写Linux-归档和传输文件

0X01:tar命令
创建备份和通过网络传输数据时,归档和压缩文件非常的有用。用来创建和使用备份存档的其中一个最早的最常见的命令也是tar命令。
通过tar命令,我们可以将大型文件集汇集成一个文件(存档)。tar存档是一个结构化的文件数据序列,其中含有每个文件和索引的元数据,以便可以提取某个单个文件,该存档可以使用gzip、bzip2或xz压缩方式进行压缩。
tar命令不仅能够列出存档内容,而且能将其文件提取到当前系统。以下是tar命令的常用选项、选项的长版本以及说明:
QQ截图20211015234707.png
QQ截图20211015234748.png
QQ截图20211015234808.png

创建新存档时要使用的第一个选项为c选项,后跟f选项,接着是一个空格,然后是要创建的存档的文件名,最后应当添加到该存档中的文件和目录列表。存档会创建在当前目录中, 除非另外指定。
以下是创建一个存档,其内容为用户主目录中的file1、file2和file3。
QQ截图20211015235523.png


要使tar能够归档选定的文件,执行tar命令的我们必需要可以读取这些文件。比如说,为/etc文件夹及所有内容创建创建新存档需要root权限,因为只有root用户才能读取/etc目录的所有文件。非root用户可以创建/etc目录的存档,但是该存档将忽略用户没有读取权限的文件,并且将忽略用户没有读取和执行的目录。
以下说明了以root用户身份创建了/root/etc.tar且内容为/etc目录的tar存档:
QQ截图20211016000020.png


t选项可以列出存档的内容,使用f选项,加上要查询的存档的名称,如下面所示:
QQ截图20211016000229.png


tar存档通常应当提取到空目录中,以确保它不会覆盖任何现有的文件,当root用户提取存档时,tar命令会保留文件的原始用户和组所有权。如果普通用户使用tar提取文件,文件所有权将属于存档中提取文件的用户。
以下说明了将/root/etc.tar存档中文件恢复到/rootetcbackup目录:
QQ截图20211016000543.png


默认情况下,从存档中提取文件时,将从存档内容中去除umask,要保留存档文件的权限,可在提取存档时使用p选项。
tar命令支持三种压缩方式。tar命令支持三种不同的压缩方式,gzip压缩速度最快,历史最久,使用的也最广泛,能够跨发行版甚至跨平台使用。bzip2压缩创建的存档文件通常比gzip创建的文件小,但可用性不如gzip;而xz压缩方式相对较新,但通常提供可用方式中最佳的压缩率。
最好使用单个顶级目录,其中可包含其他的目录和文件,以通过有序的方式来简化文件提取。使用下列选项之一来创建压缩的tar存档:
-z--gzip进行gzip压缩
QQ截图20211016001325.png


-j--bzip2进行bzip2压缩

QQ截图20211016001345.png

-J-xz进行xz压缩
QQ截图20211016001401.png



创建存档后,使用tf选项来验证存档的内容,在列出压缩文件的内容时,不必强制使用压代理选项。如下所示:


QQ截图20211016001520.png

提取压缩的tar存档时,要执行的第一步是决定存档文件应提取到位置,然后创建并更改到目录目录。tar命令会判断之前使用的压缩方式,因此通常不需要使用在创建存档时所用的同一压缩选项。可以在tar命令中添加解压缩方式,如果这样做,则必须使用正确的解压缩类型选项,否则,tar会生成错误来指出选项中指定的解压缩类型与文件的解压缩类型不匹配。
提取gzip压缩的存档:

QQ截图20211016002729.png

提取bzip2压缩的存档
QQ截图20211016002804.png


提取xz压缩的存档:
QQ截图20211016002906.png


0X02:系统中安全的传输和同步文件
Openssh命令对于确保在远程上安全运行shell命令非常有用。Secure copy命令scpopenssh套件的一部分,可将文件从远程系统复制到本地系统或从本地系统复制到远程系统。此命令利用ssh服务器进行身份验证,并在数据传输之前对其进行加密。
我们可以为所要复制的文件的源或目标指定一个远程位置,格式为[user@]host:/path。该参数的user@部分是可选的。如果不指定该部分,则使用我们当前的本地用户名,运行命令时,scp客户端将使用基于密钥的身份验证或以提示我们输入密码的方式向远程ssh服务器进行身份验证,就像ssh一样。
如下图所示:

QQ截图20211016234250.png

rsync命令是在系统之间安全复制文件的另一种方式。此工具采用的算法可通过仅同步已更改的文件部分来将复制的数据量最小化,它与scp的区别在于,如果两个服务器间的两个文件或目录相似,rsync将仅复制文件系统间的差异部分,而scp仍复制所有内容。
rsync的一个优点是它能够在本地系统和远程系统之间安全而高效地复制文件,虽然首次目录同步的用时与复制操作大致相同,但之后的同步只需要通过网络复制差异部分,从而会大幅度加快更新的速度。
以下是rsync -a启用的选项:

QQ截图20211016235042.png































发新帖
您需要登录后才可以回帖 登录 | 立即注册