linux scp拷贝软连接,scp 拷贝 针对软连接的问题

scp时经常把软连接变成拷贝了两遍,rsync -l可以避免这个问题

1. ln 软连接的scp

我们在系统中,经常用到软连接;当我们从远程机器scp  数据时,这个软连接不会cp过来;而是:

把软连接到的目录中的内容完全cp过来;这样之前的软连接就失效了;这样会造成一系列的问题。

2. scp  文件夹 正确的方法:tar 打包在解压

sudo tar -czvf test.tgz /..../test

scp ~/test.tgz ./

sudo tar -xzvf ./test.tgz -C /

注释:将待远程拷贝的文件夹压缩之后再拷贝, 可以避免软连接的拷贝

利用tar等压缩命令将文件夹压缩

但是如果文件夹无法操作, 则需要用下面的命令替换。

注释:使用rsync命令可以避免软连接问题

# 列出几个参数如下, 具体请man rsync查看

-u, --update:

skip files that are newer on the receiver 增量同步,跳过比本地较新的文件

-a, --archive:

archive mode; equals -rlptgoD (no -H,-A,-X) 归档模式,

相当于-rlptgoD, 不包括(no -H,-A,-X);最常用的参数

-z, --compress:

compress file data during the transfer 输过程中压缩文件数据

3.删除软连接

[root@localhost bin]# ll |grep python3

lrwxrwxrwx 1 root root 32 Sep 23 16:33 python3 -> /usr/local/python3.5/bin/python3

[root@localhost bin]# ln -s /usr/local/python3.5/bin/python3.5 /usr/bin/python3

ln: failed to create symbolic link ‘/usr/bin/python3’: File exists

[root@localhost bin]# rm -rf /usr/bin/python3

[root@localhost bin]# ln -s /usr/local/python3.5/bin/python3.5 /usr/bin/python3

[root@localhost bin]# ll |grep python3

lrwxrwxrwx 1 root root 34 Sep 23 16:42 python3 -> /usr/local/python3.5/bin/python3.5

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Java 中上传文件到 Linux 软连接,需要注意以下几点: 1. 需要确保软连接指向的目标文件或目录存在且有足够的权限。 2. 如果软连接指向的是目录,需要确保上传的文件名不会与目录中已有的文件名冲突。 3. 上传文件时需要使用软连接的绝对路径。 下面是一个简单的 Java 上传文件到 Linux 软连接的示例代码: ``` import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; public class UploadFileToSymlink { public static void main(String[] args) { String symlinkPath = "/path/to/symlink"; String targetPath = "/path/to/target"; String filename = "example.txt"; String filepath = "/path/to/upload/" + filename; try { // 创建 Socket 连接 Socket socket = new Socket("linux-server", 22); // 获取输入输出流 InputStream inputStream = new FileInputStream(new File(filepath)); OutputStream outputStream = socket.getOutputStream(); // 上传文件到软连接 outputStream.write(("scp -t " + symlinkPath + "\n").getBytes()); if (checkAck(inputStream) != 0) { System.exit(1); } long fileSize = new File(filepath).length(); String command = "C0644 " + fileSize + " " + filename + "\n"; outputStream.write(command.getBytes()); if (checkAck(inputStream) != 0) { System.exit(1); } byte[] buffer = new byte[1024]; int count; while ((count = inputStream.read(buffer)) > 0) { outputStream.write(buffer, 0, count); } inputStream.close(); inputStream = null; // 关闭连接 outputStream.flush(); outputStream.close(); socket.close(); } catch (IOException e) { e.printStackTrace(); } } private static int checkAck(InputStream inputStream) throws IOException { int b = inputStream.read(); if (b == 0) { return b; } if (b == -1) { return b; } StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append((char) b); while (inputStream.available() > 0) { b = inputStream.read(); if (b == 0 || b == -1) { break; } stringBuilder.append((char) b); } if (stringBuilder.toString().startsWith("Error")) { System.out.println(stringBuilder.toString()); } return b; } } ``` 在上面的代码中,我们使用 SCP 命令将文件上传到软连接。通过检查 SCP 命令的返回值,可以判断文件上传是否成功。如果上传成功,可以在软连接指向的目录中看到上传的文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值