一、文件压缩
跟windows一样,在Linux下一样需要压缩文件和解压缩包。在Linux中。我们把多个文件打包成一个文件,称为存档。但是我们通俗还是说压缩文件或者压缩包。使用tar命令可以来管理压缩文件。

tar选项
tar命令选项划分成不同的操作,其中包括一般选项和压缩选项。

操作选项

选项 作用
-c、--create 创建压缩包
-x、--extract 解压压缩包
-t、--list 查看压缩包内容
一般选项

选项 作用
-v、--verbose 详细信息。显示操作的文件有哪些
-f、--file= 文件名。此选项后必需跟要使用或常见的文件名
-p、--preserve-permissions 在解压缩是保留文件和目录的权限。
压缩选项

选项 作用
-z、--gzip 使用gzip压缩方式(.tar.gz)
-j、--bzip2 使用bzip2压缩方式(.tar.bz2)
-J、--xz 使用xz压缩方式(.tar.xz)
tar操作
创建一个压缩包
[root@rhce opt]# touch file{1..3}
[root@rhce opt]# ls
file1 file2 file3
[root@rhce opt]# tar -cf file.tar file1 file2 file3
[root@rhce opt]# ls
file1 file2 file3 file.tar
注:创建tar压缩包,如果出现同名,会直接覆盖,不会提供警报。在生产环境中切记要先检查有无同名压缩包。
要创建压缩包。必需能够读取这些文件。如果没有读取权限,tar命令会忽略没有权限的文件,以及没有读取和执行权限的目录。
部分高级权限(如ACL和SElinux)不会自动保存到压缩包中,需要使用-x选项。

查看压缩包里面的内容
[root@rhce opt]# tar -tf file.tar
file1
file2
file3

解压一个压缩包
[root@rhce opt]# mkdir backup
[root@rhce opt]# cd backup/
[root@rhce backup]# tar -tf /opt/file.tar
file1
file2
file3
[root@rhce backup]# ls
[root@rhce backup]# tar -xf /opt/file.tar
[root@rhce backup]# ls
file1 file2 file3

默认情况下,从压缩包中解压文件,不会暴露文件的权限,需要在解压的时候使用p选项。

二、文件传输
(1)scp传输
scp是OpenSSH套件的一部分,可以将文件从远程系统复制到本地,或者从本地复制到远程系统。scp使用ssh服务器进行身份验证,并在数据传输之前进行加密。远程位置的格式为 [user@]host:/path,当没有指定用户名时,则使用当前的本地用户名。

将本地文件/etc/yum.repos.d/local.repo复制到远程系统上。

[root@rhce ~]# scp /etc/yum.repos.d/local.repo 192.168.211.20:/etc/yum.repos.d/
The authenticity of host '192.168.211.20 (192.168.211.20)' can't be established.
ED25519 key fingerprint is SHA256:GY1+lg2p5HUnJ97i4xh24Lv2DrWCLGKyxu5bnMBGjpQ.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.211.20' (ED25519) to the list of known hosts.
root@192.168.211.20's password:
local.repo 100% 152 263.3KB/s 00:00

将远程系统上的/etc/yum.repos.d/local.repo复制到本地。

[root@rhce ~]# scp 192.168.211.20:/etc/yum.repos.d/local.repo /etc/yum.repos.d/
root@192.168.211.20's password:
local.repo 100% 152 110.8KB/s 00:00

当复制的对象为一个目录的时候需要使用 -r选项

[root@rhce ~]# scp -r /etc/yum.repos.d 192.168.211.20:/etc/
root@192.168.211.20's password:
redhat.repo 100% 358 530.5KB/s 00:00
local.repo 100% 152 340.0KB/s 00:00

(2)sftp传输
sftp是以交互方式从远程系统上下载或上传文件。同样是先进行安全身份验证,并将数据加密进行传输。与scp一样,使用 [user@]host来标识目标系统和用户。交互式sftp会话接受各种命令,这些命令在远程文件系统上运行的方式与在本地文件系统上相同,如ls、cd、mkdir、rmdir和 pwd。put 命令将文件上载到远程系统。get 命令从远程系统下载文件。exit 命令可退出 sftp 会话。

将本地的/etc/hosts文件上传到目标系统,将目标系统的/etc/passwd保存到本地。

[root@rhce ~]# sftp 192.168.211.20
root@192.168.211.20's password:
Connected to 192.168.211.20.
sftp> put /etc/host
host.conf hostname hosts
sftp> put /etc/hosts /opt/
Uploading /etc/hosts to /opt/hosts
hosts 100% 179 289.6KB/s 00:00
sftp> get /etc/passwd /root/
Fetching /etc/passwd to /root/passwd
passwd 100% 2551 2.1MB/s 00:00
sftp> exit
[root@rhce ~]# ll passwd
-rw-r--r--. 1 root root 2551 Aug 22 11:09 passwd

(3)rsync传输
rsync命令与scp一样都可以在本地和远程系统中复制文件,不同的是scp命令是将内容全部复制,而rsync会通过算法来同步已更改的文件部分,来保证数据量最小化。

rsync的优点就是可以在本地和远程之间安全而高效地复制文件。虽然首次目录同步的用时与复制操作大致相同,但在之后的同步只需要通过网络复制差异部分,从而大幅加快更新的速度。

rsync有一个重要的选项 -n,用于执行空运行。对执行命令时所发生情况的模拟。空运行显示了在命令正常运行时,rsync所以进行的更改。在生产环境中先执行空运行,可以避免重要文件被删除或者覆盖。

常用选项

选项 作用
-v、--verbose 显示详细信息
-a、--archive 启用存档模式,以保留文件的大部分特征。
-l、--links 同步符号链接
-p、--petms 保留权限
-t、--times 保留时间戳
-g、--group 保留所有组
-o、--owner 保留拥有人
-D、--devices 同步设备文件
-H、--hard-links 保留硬链接
-A、--acls 保留ACL权限
-X、--xattrs 保留SElinux上下文
要保留文件属性,必需是root用户。如果目标为远程系统,则以root身份进行验证。如果目标是本地,则必须以root身份运行命令。

将本地的 /var/log同步到远程系统的/tmp目录

[root@rhce ~]# rsync -a /var/log 192.168.211.20:/tmp
root@192.168.211.20's password:

将远程系统的 /var/log同步到本地

[root@rhce ~]# rsync -a 192.168.211.20:/var/log /tmp
root@192.168.211.20's password:

注意:rsync命令在源目录名称中是否存在尾斜杠非常重要。它将决定同步到目标中的是目录,还是目录中的内容。

[root@rhce tmp]# rsync -a /var/log /tmp/text
[root@rhce tmp]# ls text
log
[root@rhce tmp]# rsync -a /var/log/ /tmp/text1
[root@rhce tmp]# ls text1
anaconda cron-20230810 maillog secure-20230803 vmware-network.5.log
audit cron-20230817 maillog-20230803 secure-20230810 vmware-network.6.log
boot.log cups maillog-20230810 secure-20230817 vmware-network.7.log
boot.log-20230814 dnf.librepo.log maillog-20230817 speech-dispatcher vmware-network.8.log
boot.log-20230815 dnf.log messages spooler vmware-network.9.log
boot.log-20230817 dnf.rpm.log messages-20230803 spooler-20230803 vmware-network.log
boot.log-20230818 firewalld messages-20230810 spooler-20230810 vmware-vgauthsvc.log.0
boot.log-20230819 gdm messages-20230817 spooler-20230817 vmware-vmsvc-root.log
boot.log-20230821 hawkey.log nginx sssd vmware-vmtoolsd-root.log
boot.log-20230822 hawkey.log-20230815 private tallylog vmware-vmusr-root.log
btmp hawkey.log-20230822 qemu-ga tuned wtmp
btmp-20230801 httpd README vmware-network.1.log
chrony insights-client rhsm vmware-network.2.log
cron kdump.log samba vmware-network.3.log
cron-20230803 lastlog secure vmware-network.4.log

支持一下
更多技术


慵懒的猫mi
1 声望0 粉丝