freerdp连接远程主机互相复制粘贴文件的操作

远程主机复制文件到本地linux主机

如果在远程主机中复制文件粘贴到本地linux系统中,那么剪切板中的数据类型是下面三种类型的数据:

1
2
3
text/uri-list
x-special/gnome-copied-files
x-special/mate-copied-files

注意在使用了wl-paste命令后,会将剪切板中的文件内容保存在命令执行后的路径中;如果不执行wl-paste命令是不会生成这个文件的,类似如下的路径:

1
file:///tmp/com.freerdp.client.cliprdr.2180867/20/region_2024_3_18 11_13_48.csv

其中/2180867/20是随机生成的。

本地linux主机复制文件到远程主机中

本地linux主机复制文件到远程windows主机中当然也需要满足特定的格式,
1.需要获取到文件的绝对路径(没有测试过文件夹是否能够正常复制到远程主机中)
2.复制的数据要将类型设置成text/uri-list,我的桌面环境sway;如果是gnome或者别的桌面环境可能要使用不同的类型,这些可以自行测试。
以下是我生成文件绝对路径到剪切板的命令:

1
readlink -f <PATH_FILE> | sed 's|^|file://|' |wl-copy -t text/uri-list

生成了以后就能直接在远程windows主机中粘贴文件了。为了方便我将这一长串命令封装成了一个函数这样就能简单的调用复制了,我的写法如下(在.bashrc文件中定义函数实现的):

1
2
3
rdpcp() {
readlink -f $1 | sed 's|^|file://|' |wl-copy -t text/uri-list
}

将上面的内容添加到.bashrc;使用source .bashrc生效刚刚的配置;然后就能直接在终端中使用这个函数了如下格式:

1
rdpcp <PATH_FILE>

<PATH_FILE>可以是相对路径
注意这个复制仅仅适用于在终端中使用,如果有文件管理器就无需这些步骤了。直接在文件管理器中复制就能正常工作。