本篇继续分享Linux中常用命令。主要分享Linux系统的文件备份和压缩相关的命令。

tar命令——压缩备份
tar命令是linux非常使用频率非常高的一个命令。打包是指将一大堆文件或目录变成一个总的文件,压缩则是将一个大的文件通过一些压缩算法变成一个小文件。
选项:
-c | 创建一个新的tar压缩包 |
-x | 解压tar包 |
-t | 查看压缩包的内容 |
-C | 指定解压路径 |
-f | 指定要处理的文件名 |
-j | 使用bzip2方式进行压缩或解压 |
-z | 使用gzip方式进行压缩或解压 |
–exclude=PATHERN | 打包时排除不需要处理的文件或目录 |
-v | 显示详细过程 |
常用操作:
1、 解压缩包到指定位置
[root@localhost ~]# tar -zxvf jdk-8u202-linux-x64.tar.gz -C /data[root@localhost ~]# ll /data
总用量 0drwxr-xr-x 7 10 143 245 12月 16 2018 jdk1.8.0_202
2、 压缩文件
[root@localhost data]# tar -zcvf jdk8.tar.gz jdk1.8.0_202/[root@localhost data]# ll
总用量 189500drwxr-xr-x 7 10 143 245 12月 16 2018 jdk1.8.0_202
-rw-r--r-- 1 root root 194045097 10月 22 20:26 jdk8.tar.gz
3、 查看压缩包内容[root@localhost data]# tar -tf jdk8.tar.gz
gzip命令——压缩或解压文件
gzip命令用于将一个大的文件通过压缩算法变成一个小的文件。gzip命令不能直接压缩目录,因此目录需要先用tar打包成一个文件,然后tar再调用gzip进行压缩。
选项:
-d | 解开压缩文件 |
-v | 显示执行过程 |
-c | 将内容输出到标准输出,不改变原始文件 |
常用操作:
1、压缩文件,默认不保留源文件,将源文件做成.gz压缩包
[root@localhost ~]# gzip hosts
[root@localhost ~]# ll
总用量 8-rw------- 1 root root 1506 3月 13 2022 anaconda-ks.cfg-rw-r--r-- 1 root root 94 10月 22 20:36 hosts.gzdrwxr-xr-x 2 root root 6 10月 22 20:36 test
2、解开压缩包[root@localhost ~]# gzip -d hosts.gz[root@localhost ~]# ll
总用量 8
-rw------- 1 root root 1506 3月 13 2022 anaconda-ks.cfg-rw-r--r-- 1 root root 177 10月 22 20:36 hosts
drwxr-xr-x 2 root root 6 10月 22 20:36 test
3、压缩目录(压缩失败,只能压缩文件,不可压缩目录)[root@localhost ~]# gzip test/gzip: test/ is a directory -- ignored
4、保留源文件压缩[root@localhost ~]# gzip -c hosts >hosts.gz
[root@localhost ~]# ll
总用量 12
-rw------- 1 root root 1506 3月 13 2022 anaconda-ks.cfg
-rw-r--r-- 1 root root 177 10月 22 20:36 hosts-rw-r--r-- 1 root root 94 10月 22 20:44 hosts.gz
zip命令——打包和压缩文件
zip压缩格式是Windows与Linux等多平台通用的压缩格式。和gzip命令相比,zip命令压缩文件不仅不会删除源文件,而且还可以压缩目录。
选项:
-r | 递归压缩目录和文件 |
-x | 压缩文件时排除某个文件 |
常用操作:
1、压缩文件
[root@localhost ~]# cp /etc/services .
[root@localhost ~]# ll
总用量 660
-rw------- 1 root root 1506 3月 13 2022 anaconda-ks.cfg
-rw-r--r-- 1 root root 670293 10月 22 20:50 services
[root@localhost ~]# zip services.zip ./services
adding: services (deflated 80%)[root@localhost ~]# ll
总用量 796
-rw------- 1 root root 1506 3月 13 2022 anaconda-ks.cfg
-rw-r--r-- 1 root root 670293 10月 22 20:50 services
-rw-r--r-- 1 root root 136227 10月 22 20:50 services.zip
2、压缩目录[root@localhost data]# zip jdk.zip ./jdk1.8.0_202/ //没有压缩updating: jdk1.8.0_202/ (stored 0%
[root@localhost data]# zip -r jdk.zip ./jdk1.8.0_202/
[root@localhost data]# ll
总用量 192112
drwxr-xr-x 7 10 143 245 12月 16 2018 jdk1.8.0_202-rw-r--r-- 1 root root 196719566 10月 22 20:53 jdk.zip
unzip命令——解压zip命令压缩的文件
选项:
-d | 指定解压的路径 |
-v | 显示解压详细过程,默认选项 |
-o | 解压时不提示是否覆盖文件 |
常用操作:
1、默认解压到当前目录
[root@localhost data]# unzip jdk.zip
[root@localhost data]# ll
总用量 192112
drwxr-xr-x 7 root root 245 12月 16 2018 jdk1.8.0_202
-rw-r--r-- 1 root root 196719566 10月 22 20:53 jdk.zip
2、解压到指定目录[root@localhost data]# unzip -d /root jdk.zip //解压到/root目录
[root@localhost data]# ll /root/
总用量 4
-rw------- 1 root root 1506 3月 13 2022 anaconda-ks.cfgdrwxr-xr-x 7 root root 245 12月 16 2018 jdk1.8.0_202
3、再次解压不提示,直接覆盖[root@localhost data]# unzip -d /root jdk.zip //再次执行会提示是否覆盖
Archive: jdk.zipreplace /root/jdk1.8.0_202/javafx-src.zip? [y]es, [n]o, [A]ll, [N]one, [r]ename: error: invalid response
[{ENTER}]replace /root/jdk1.8.0_202/javafx-src.zip? [y]es, [n]o, [A]ll, [N]one, [r]ename: ^C
[root@localhost data]#
[root@localhost data]# unzip -o -d /root jdk.zip //添加-o操作后就不会询问是否覆盖。
scp命令——远程复制文件
scp使用的是ssh协议。每次都是全量复制。适合第一次复制。
选项:
-r | 递归复制 |
-p | 保留文件原始属性 |
-P 端口号 | 指定传输的端口号 |
-q | 不显示传输进度 |
常用操作:
1、将本机的文件复制到远端主机,需要知道远端的服务器密码
scp -rp jdk1.8.0_202/ root@10.10.10.3:/data
root是远端用户,也可以是其他普通用户10.10.10.3是远端IP地址/data是远端服务器的目录,要写绝对路径
2、将远端主机文件复制到本机。[root@localhost data]# scp root@10.10.10.3:/etc/services /dataroot@10.10.10.3's password: //输入远端主机密码services 100% 655KB 64.4MB/s 00:00
3、指定端口复制,有些不是常规端口时就需要指定[root@localhost data]# scp -P 22 root@10.10.10.3:/etc/hosts /dataroot@10.10.10.3's password: hosts 100% 158 110.7KB/s 00:00
rsync命令——文件同步工具
rsync具有可使本地和远程两台主机之间的数据快速复制同步镜像、远程备份的功能,这个功能类似于ssh带的scp命令,但是又优于scp命令的功能,scp每次都是全量拷贝,而rsync可以增量拷贝。
选项:
-z | 传输时进行压缩 |
-a | 以递归方式传输文件,并保持原有属性,相当于-rtopgDI |
-r | 递归复制传输 |
-t | 保持文件的时间信息 |
-o | 保留文件的属主信息 |
-p | 保留文件的权限 |
-g | 保留文件的属组信息 |
-D | 保留设备文件信息 |
-l | 保留软链接 |
–exclude-from=file | 排除指定的文件不需要传输 |
–delete | 使目标目录内容和源保持目录一直,删除不同的文件 |
三种模式:
1、本地模式:用于本机传输文件,相当于cp命令
rsync 选项 源文件 目标文件
[root@localhost ~]# rsync -av /etc/hosts /tmp
sending incremental file list
hosts
sent 267 bytes received 35 bytes 604.00 bytes/sec
total size is 177 speedup is 0.59
[root@localhost ~]# ll /tmp
总用量 4
-rw-r--r-- 1 root root 177 5月 6 2022 hosts
2、远程访问模式:将文件传输给远端主机或拉去远端主机的文件
拉取:rsync 选项 用户@主机:源文件 目标文件
推送:rsync 选项 源文件 用户@主机:目标文件
1、拉取远程文件[root@localhost ~]# rsync -avz root@10.10.10.3:/etc/hostname ./
2、拉取远程目录下的所有文件
[root@localhost ~]# rsync -avz root@10.10.10.3:/root/ /data/
3、本地文件推送给远程目录
[root@localhost ~]# rsync -avz /data root@10.10.10.3:/tmp/
3、守护进程模式:需要安装客户端
守护进程模式后期使用单独的篇章来详细解读。先了解一些基本用法。
拉取:
rsync 选项 用户@主机::源文件 目标文件rsync 选项 rsync://用户@主机:端口/源文件 目标文件
示例:rsync -avz rsync_backup@10.10.10.3::backup/ /mnt/ --password-file=/etc/rsync.password
推送:rsync 选项 源文件 用户@主机::目标文件rsync 选项 源文件
rsync://用户@主机:端口/源文件
示例:rsync -avz /mnt/ rsync_backup@10.10.10.3::backup/ --password-file=/etc/rsync.password