目录
管理压缩的 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 命令可安全高效地在两个目录之间同步文件。
「RHCSA 红帽系统管理」8、压缩归档和传输文件
https://blog.kobin.cn/notes/2857.html