「RHCSA 红帽系统管理」8、压缩归档和传输文件

管理压缩的 tar 存档

通过 tar 命令可以将多个文件汇集成一个存档,该存档可以使用 gzip、bzip2 或 xz 压缩方式进行压缩。

tar 命令需要以下三个常用选项之一。

-c 创建一个新存档。
-x从现有存档提取。
-t列出存档的目录。

其他常用选项如下:

-v获取详细信息,用于显示存档或提取的文件有哪些。
-f文件名,此选项必须后接要使用或创建的存档文件名。
-p在提取存档时保留文件和目录的权限,而不去除 umask。

创建新存档时需要使用 -c 选项和 -f 选项,指定创建的存档文件名,最后添加到该存档中的文件列表。

[root@redhat ~]# tar -cf archive.tar 1.txt 2.txt 3.txt
[root@redhat ~]# ls archive.tar 
archive.tar

使用 -t 选项可以列出存档的内容。

[root@redhat ~]# tar -tf archive.tar 
1.txt
2.txt
3.txt

使用 x 选项可以从存档中提取文件。

当 root 提取存档时,tar命令会保留文件的原始用户和组所有权。如果普通用户使用 tar 提取文件,文件所有权将属于从存档中提取文件的用户。默认情况下,从存档中提取文件时,将从存档内容的权限中去除 umask。要保留存档文件的权限,可在提取存档时使用 -p 选项。

[root@redhat ~]# mkdir aaa && cd aaa
[root@redhat aaa]# tar -xf ../archive.tar 
[root@redhat aaa]# ll
总用量 0
-rw-r--r--. 1 root root 0 9月  7 00:08 1.txt
-rw-r--r--. 1 root root 0 9月  7 00:32 2.txt
-rw-r--r--. 1 root root 0 9月  7 00:32 3.txt

tar 命令支持三种不同的压缩方式。

-z使用 gzip 压缩方式 (.tar.gz)。gzip 压缩速度最快,历史最久,使用最为广泛,能够跨发行版甚至跨平台使用。
-j使用 bzip2 压缩方式 (.tar.bz2)。bzip2 的压缩率通常比 gzip 高。 bzip2 压缩到存档文件通常比 gzip 创建的文件小,但使用不如 gzip 广泛。
-J使用 xz 压缩方式 (.tar.xz)。xz 的压缩率通常比 bzip2 更高。xz 压缩方式相对较新,提供最佳的压缩率。
# 创建 gzip 压缩存档
[root@redhat ~]# tar -czf archive.tar.gz aaa 

# 创建 bzip2 压缩存档
[root@redhat ~]# tar -cjf archive.tar.bz2 aaa 

# 创建 xz 压缩存档
[root@redhat ~]# tar -cJf archive.tar.xz aaa 

提取压缩的 tar 存档时,tar 命令会判断之前使用的压缩方式,因此通常不需要使用在创建存档时,所用的同一压缩选项。

[root@redhat ~]# mkdir bbb && cd bbb
[root@redhat bbb]# tar -xf ../archive.tar.gz
[root@redhat bbb]# ll
总用量 0
drwxr-xr-x. 2 root root 45 9月  7 01:09 aaa

使用 scp 传输文件

Secure Copy (scp) 命令是 OpenSSH 套件的一部分,可将文件从远程服务器复制到本地,或者从本地复制到远程服务器。

此命令利用 SSH 服务器进行身份验证,并在数据传输之前对其进行加密。远程位置的格式应为 [user@]host:/path 。

[root@redhat ~]# scp 1.txt manager@10.0.101.10:/volume1/homes/kobin/
manager@10.0.101.10's password: 
1.txt                                   100%  713   109.3KB/s   00:00  

要以递归方式复制整个目录树,可以使用 -r 选项。

[root@redhat ~]# scp -r aaa manager@10.0.101.10:/volume1/homes/kobin/
manager@10.0.101.10's password: 
a1.txt                                   100%    0     0.0KB/s   00:00    
a2.txt                                   100%    0     0.0KB/s   00:00    
a3.txt                                   100%    0     0.0KB/s   00:00  

使用 sftp 传输文件

安全文件传输程序 sftp 以交互方式从 SSH 服务器上传或下载文件,与 scp 命令一样,使用 [user@]host 来标识目标系统和用户名。

[root@redhat ~]# sftp manager@10.0.101.10
manager@10.0.101.10's password: 
Connected to manager@10.0.101.10.
sftp>

使用 put 命令将本地系统上的文件,上传到远程服务器中。

sftp> cd /homes/kobin/
sftp> put /root/1.txt 
Uploading /root/1.txt to /homes/kobin/1.txt
/root/1.txt                                   100%  713   184.4KB/s   00:00 

使用 get 命令从远程服务器下载文件,到本地系统上的当前目录,然后使用 exit 命令退出 sftp 会话。

sftp> get work.xlsx 
Fetching /homes/kobin/work.xlsx to work.xlsx
/homes/kobin/work.xlsx
sftp> exit

使用 rsync 同步文件和目录

rsync 命令是在系统之间安全复制文件的一种方式,此工具可以仅同步已更改的文件部分,以实现复制的数据量最小化。

使用 rsync 进行同步时,两个常用的选项为 -v 和 -a 选项。-v 选项可提供更详细的输出,这对于故障排除和查看实时进度非常有用。-a 选项将启用「存档模式」,可实现递归复制并开启很多有用的选项,以保留文件的大部分特征。

存档模式与指定以下选项的作用相同:

-r以递归方式同步整个目录树
-l同步符号链接
-p保留权限
-t保留时间戳
-g保留组所有权
-o保留文件所有者
-d同步设备文件

使用 rsync 可以同步两个本地文件或目录的内容。

[root@redhat ~]# ll aaa
总用量 0
-rw-r--r--. 1 root root 0 9月  7 02:33 a1.txt
-rw-r--r--. 1 root root 0 9月  7 02:33 a2.txt
-rw-r--r--. 1 root root 0 9月  7 02:33 a3.txt

[root@redhat ~]# ll bbb
总用量 0

# 开始执行同步
[root@redhat ~]# rsync -av ~/aaa/ ~/bbb
sending incremental file list
./
a1.txt
a2.txt
a3.txt
sent 230 bytes  received 76 bytes  612.00 bytes/sec
total size is 0  speedup is 0.00

[root@redhat ~]# ll bbb
总用量 0
-rw-r--r--. 1 root root 0 9月  7 02:33 a1.txt
-rw-r--r--. 1 root root 0 9月  7 02:33 a2.txt
-rw-r--r--. 1 root root 0 9月  7 02:33 a3.txt

为 rsync 命令键入源目录时,目录名称中是否存在尾随斜杠至关重要。它将决定同步到目标中的是目录还是仅目录中的内容。

跟 scp 和 sftp 命令一样,rsync 使用 [user@]host:/path 格式来指定远程位置。

总结

  • tar 命令可从一组文件或目录创建存档文件,从存档中提取文件,以及列出存档的内容。
  • tar 命令提供一组不同的压缩方式,用于缩小存档的大小。
  • scp 和 sftp 命令作为与运行 SSH 服务器的远程系统来回传输文件的安全方式。
  • rsync 命令可安全高效地在两个目录之间同步文件。
本文为原创文章,著作权归作者所有:来自「KOBIN 技术随笔」作者的原创作品,转载请标明出处。
「RHCSA 红帽系统管理」8、压缩归档和传输文件
https://blog.kobin.cn/notes/2857.html
(0)

相关文章

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

CAPTCHAis initialing...