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目录内容 传至 本地
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步