Linux常用命令之文件备份和压缩

本篇继续分享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 /tmpsending incremental file listhosts

sent 267 bytes received 35 bytes 604.00 bytes/sectotal 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
    此条目发表在未分类分类目录。将固定链接加入收藏夹。

    发表回复

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