tar 打包

tar 本身是一个打包工具,可以把目录打包成一个文件,它把所有文件整合成为一个大文件,方便复制或者移动;

tar 不仅可以打包目录,也可以打包文件,其中不管打包还是解包,源文件是不会删除的,会覆盖当前已存在的目录。

1、基本语法

tar [ 选项 ] XXX.tar.gz 将要打包进去的内容  (功能描述:打包目录,压缩后的文件式.tar.gz )

2、选项说明

选项

功能

-c

产生.tar 打包文件

-v

显示详细信息

-f

指定压缩后的文件名

-z

打包同时压缩

-x

解包.tar 文件

-C

解压到指定目录

3、压缩案例实操

## 1 压缩多个文件
[root@icoolkj dataBak]# ls
test1.txt  test2.txt
[root@icoolkj dataBak]# tar -zcvf test.tar.gz test1.txt test2.txt 
test1.txt
test2.txt
[root@icoolkj dataBak]# ls
test1.txt  test2.txt  test.tar.gz
[root@icoolkj dataBak]# 

## 2 压缩目录
[root@icoolkj dataBak]# ll
总用量 5928
drwxr-xr-x 3 root root    4096 12月 27 09:40 t1
[root@icoolkj dataBak]# tar -zcvf t.tar.gz t1/
t1/
t1/t2/
t1/t2/t3/
t1/t2/t3/test1.txt
t1/t2/test2.txt
[root@icoolkj dataBak]# ls
t1  t.tar.gz
[root@icoolkj dataBak]# 

## 3 后台运行压缩
[root@icoolkj dataBak]# nohup tar -zcvf test.tar.gz t1/ >mycompress20221228.log 2>&1 &
[root@icoolkj dataBak]# ls
nohup.out  t1  test1.txt  test2.txt  test.tar.gz
[root@icoolkj dataBak]#

4、解压案例实操

## 1 解压到当前目录
[root@icoolkj dataBak]# tar -zxvf test.tar.gz 
test1.txt
test2.txt
[root@icoolkj dataBak]# ls
t1  test1.txt  test2.txt  test.tar.gz  t.tar.gz
[root@icoolkj dataBak]# 

## 2 解压到指定目录
[root@icoolkj dataBak]# tar -zxvf t.tar.gz -C tt/
t1/
t1/t2/
t1/t2/t3/
t1/t2/t3/test1.txt
t1/t2/test2.txt
[root@icoolkj dataBak]# ll tt/
总用量 4
drwxr-xr-x 3 root root 4096 12月 27 09:40 t1
[root@icoolkj dataBak]# 

## 3 后台运行解压指定目录
[root@icoolkj dataBak]# nohup tar -zxvf test.tar.gz  -C tt/ >mydecompress20221228.log 2>&1 &
[root@icoolkj dataBak]# ls
nohup.out  t1  test1.txt  test2.txt  test.tar.gz  tt
[root@icoolkj dataBak]# ls tt/
t1
[root@icoolkj dataBak]#

5、后台运行命令:nohup

nohup命令:nohup是不挂断的意思( no hang up)。如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令忽略所有挂(SIGHUP)信号,可以在你退出帐户/关闭终端之后继续运行相应的进程。
一般格式为: nohup yourcommand &
## yourcommand:启动对象命令。可以跟该命令需要的各种参数。
## &是指在后台运行,但当用户推出(挂起)的时候,命令自动也跟着退出. nohup与&结合起来,可以实现不挂断的后台运行。

实现屏幕输出记录到日志文件: nohup yourcommand 2>&1 &
## 0 – stdin (standard input),1 – stdout (standard output),2 – stderr (standard error) ;
## 2>&1是将标准错误(2)重定向到标准输出(&1),标准输出(&1)再被重定向输入到日志文件中。

如果希望将日志输出到别的文件中,可以增加一个文件路径参数。如:nohup yourcommand > myout.log 2>&1 &

实时监测日志输出内容命令:tail
tail 命令是nohup命令的好搭档。配合-f参数,可以实时监视向日志文件增加的信息。
tail -f myout.log

6、rsync 传送数据

## 从远程主机复制整个文件夹到本地目录下
[root@icoolkj dataBak]# rsync -av root@192.168.1.101:/home/data/test.tar.gz .
[root@icoolkj dataBak]# rsync -av root@192.168.1.101::/home/data/test.tar.gz .
单个冒号和双冒号的区别:使用rsync在远程传输数据前,是需要进行登陆认证的,这个过程可使用ssh协议也可以使用rsync协议完成。单冒号(:)使用的是ssh协议;双冒号(::)使用的是rsync协议。

## 
jobs    //查看任务,返回任务编号n;
bg %n    //将编号为n的任务转后台运行;
fg %n    //将编号为n的任务转前台运行;
Ctrl+z    //挂起当前任务;
Ctrl+c    //结束当前任务。
disown -h %n    //将这个作业忽略HUP信号
## 如何Kill掉jobs里在后台运行的程序?
## kill %1
## %后的数字,是jobs里中括号里的数字。