我的顾问经常将一堆软件编译到他/ usr / local中,然后将他/ usr / local作为tarball分发。然后我将tarball提取到我们的实验室机器上供我们使用。到目前为止,这个工作正常,我们只需用tarball的内容替换旧的/ usr / local。
但我已经开始在这些机器上安装我自己的软件了。如果我删除/ usr / local,显然有些软件和配置也会被删除。
相反,我如何递归地将tarball中的文件复制到/ usr / local中的相应目录中?
例如:
tarball path filesystem path
------------ ---------------
local/bin/myprog -> /usr/local/bin/myprog
local/lib/mylib.so -> /usr/local/lib/mylib.so
等
或者这对ServerFault来说是一个更好的问题吗?
答案 0 :(得分:1)
$ cd /usr
$ tar xvf f.tar
或
$ cd /tmp
$ tar xvf f.tar
$ cp -R local/. /usr/local/.
尽管如此,我认为它应该只是放在其他目录中,或者放在/usr/local/
的子目录中。除了/usr/local/
之外,没有任何神奇的东西可能是默认的PATH组件。
答案 1 :(得分:1)
cp命令具有-r标志,用于递归复制:
$ cp -r local/* /usr/local/
请查看系统的cp手册页以获取更多信息。
答案 2 :(得分:0)
使用k
选项并指定目的地以防止覆盖文件:
$ cd /usr
$ tar xvfk localtarball.tar local
local/
local/file
tar: local/file: Cannot open: File exists
local/bar2/
local/bar2/bar3
tar: local/file: Cannot open: File exists
local/bar2a/bar2aY/
tar: Error exit delayed from previous errors