scp 链接文件的问题 + tar

将本地的文件上传到服务器上,希望保持相对链接关系。(链接文件和被链接文件都在同一的目录下)

使用scp进行传输时,链接关系不会保存,所以需要解决下。(当然可以使用rsync或tar解决,但是rsync命令不熟;)

我的笨方法:

复制代码
1、通过scp将目录文件传输到服务器上;

2、在本地所在目录上执行:

find ./ -type l | xargs -I '{}' ls -l {} | awk '{printf("%s  %s\n", $9, $11)}' > filename
习惯性的使用xargs,还没形成习惯使用exec

3、将filename 传到服务器,切换目录到服务器上的目录,执行:

awk '{system("rm -r" " " $1 " 2>/dev/null; ln -s" " " $2 " " $1)}'   filename
复制代码

 

另一种方法,在本地运行:

复制代码
tar cvjf - tmp | ssh username@ip “tar xvjf - -C /home/username/”
将本地的 tmp目录内容 传至 服务器用户目录下

解压缩文件时,请使用 -C 选项
     tar xvf  newrc.tar.gz -C tmp/a/b/c
     将当前目录下的newrc.tar.gz解压缩到 tmp/a/b/c目录;相当于将 newrc.tar.gz拷贝到tmp/a/b/c目录,然后解压缩

 

复制代码

 

如果需将服务器上的大目录文件传至本地,则

ssh username@ip "cd /home/username; tar cvjf - tmp" | tar xvjf - -C ./
将服务器用户目录下的 tmp目录内容  传至 本地

 

posted on   阿加  阅读(1070)  评论(0编辑  收藏  举报

努力加载评论中...

导航

点击右上角即可分享
微信分享提示