前言/背景
今天get了一个,tar
命令 -P
(大写)参数的用法,感觉非常有用,做个笔记。
我们平时可能使用比较多的常规打包、解压命令如下:
tar zcvf xxx.tar.gz xxx //在当前工作目录,将xxx打包为xxx.tar.gz tar xcvf xxx.tar.gz //将xxx.tar.gz解压到当前工作目录
以上命令,当打包内容比较少,操作不是很频繁的时候,我们来回跳转服务器、跳转工作目录操作,是可以接受的,但当出现需要在某个用户(机器)不同的特定工作目录打包大量内容,然后再copy到另一个用户(机器)不同的特定工作目录进行解压时,频繁操作,就比较麻烦了。
如公司给大家都换了新的开发编译服务器(硬件更加强劲),此时大家都需要将原来服务器上配置过的环境、工具都搬移到新的服务器上。
此时,如果直接用scp命令 “点对点” 从旧服务器往新服务器拷贝,这样会是一个一个文件的传输拷贝,非压缩式的拷贝,如果大家都在同时操作,带宽也可能扛不住或会很慢。另外,通过scp命令想一步直接拷贝到位,必须要保障scp命令中两边服务器的目录结构对称才行,不然还是得二次操作,拖动/配置文件,命令操作上效率也比较低。
所以,需要寻找一个相对更高效的办法:
1、肯定是需要压缩环境配置/工具配置之后,再进行scp拷贝操作;尽量保证大家拷贝时长最短,占用带宽最小;
2、需要找到一个方法,在压缩的时候保留环境配置/工具配置的绝对路径信息,这样我们就可以在旧服务器home目录压缩,然后scp到新服务器home目录,直接进行解压就可以了;而不用再关心/担心挪了服务器后,环境配置/工具配置路径是否对称的问题。scp完成,解压后就可以一步到位。
实操/举例
顺着以上思路寻求解决方法,就get到了 -P
(大写)参数大法。
-P
(大写)参数说明:
如果压缩时带有-P
(大写)参数,就可以保留绝对路径;然后在解压的时候同样带有 -P
(大写)参数,就可以还原绝对路径。
举例,假如我们在旧服务器上的环境工具都安装在 /opt/tools/ 下,想快速搬迁到新服务器同样的路径下时,就可以一次进行如下操作:
假如我们在旧服务器上的环境工具都安装在 /opt/tools/ 下面,就可以:
1、在旧服务上home目录,带有-P
保留绝对路径打包:
ubuntu $ sudo tar -Pczvf tools.tar.gz /opt/tools/
此命令执行后,在旧服务上home目录,就会得到打包文件 tools.tar.gz,我们可以通过vim tools.tar.gz
查看内容,如:
" tar.vim version v29
" Browsing tarfile /home/ubuntu/tools.tar.gz
" Select a file with cursor and press ENTER
/opt/tools/
/opt/tools/xxx
/opt/tools/xxxxxxxx
/opt/tools/xxxxxxxxxxxxx
/opt/tools/xxxxxxxxxxxxxxxxxx
~
可以看到,都是带有绝对路径 /opt/tools/
的信息。
2、通过scp命令,将已打包文件 tools.tar.gz,拷贝至新服务器home目录:
ubuntu $ scp name@ip:tools.tar.gz ~
3、在新服务器home目录,带有-P
还原绝对路径:
ubuntu $ sudo tar -Pxzvf tools.tar.gz
以上操作依次完成后,在新服务器上,就可以看到 和 旧服务器路径完成对称的 /opt/tools/ 环境工具。
需要注意的
1、假如在解压的时候没有带-P
,即就会在当前服务器home目录下,解压出一个 opt/tools
目录,而不会解压到/opt/tools
,如:
ubuntu $ sudo tar -xzvf tools.tar.gz
ubuntu $ ls -l
......
drwxr-xr-x 1 root root 4096 May 22 17:30 opt
......
此时解压出的路径,已经不是绝对路径了,没有包含根路径"/"
。
2、带-P
解压操作时,是按照绝对路径还原的,意味着,如果原来绝对路径下如果存在某些同名文件,会被覆盖,所以在带-P
操作前,要小心,结合自己实际情况衡量操作,防止原有ok的东西被破坏。如果是全新的服务器环境配置或者工具搬迁,就无所谓了,直接弄。
3、假如你刚入职到一家新公司,一定记得,要以迅雷不及掩耳之势,获取老员工的各种环境配置、工具,为第一要务。。。此时,就可以顺便看看老员工知不知道-P
大法(我们不能只从老员工那里获取,要互相给予),假如碰巧老员工不知道-P
大法,相当于你告诉了他一个牛*大法,什么工具啊、环境配置啊,不仅给你,老员工一高兴,帮你解个bug也是可能的 ^_^ 。
当然,环境配置,不仅仅是需要搬移或者平移这些安装路径下的tools,也可能会涉及脚本、环境变量,一家公司特有的配置操作才行。除了自己学习、掌握更多技能的同时,到一家新公司,最主要的就是空杯心态,向其他人、老员工的虚心请教。相信我,保持虚心,永远要比反其道而行的人,收获的信息要多、成长的要快!
From V号:【嵌入式er笔记】