两台主机传送数据: transfer files between servers使用rsync命令
需求:两台主机传送数据
我想把test@111.111.111.111上的/data/lsz/code/peft_study/路径下的全部文件转移到target@111.111.111.222下面的/data/lsz/code路径下,形成一样的路径:/data/lsz/code/peft_study/,我应该怎么做?使用scp命令吗还是其他
请注意:这里的ip地址等信息为虚构。
实操请看:实际操作过程这一部分。前面是GPT给出的结果。
要将文件从一台服务器传输到另一台服务器,并保持相同的目录结构,可以使用 scp
或 rsync
工具。
推荐方法:使用 rsync
(更高效)
rsync
更适合传输大批量文件,支持增量传输和断点续传功能,适用于需要保持目录结构的任务。
命令
rsync -avz --progress test@111.111.111.111:/data/lsz/code/peft_study/ target@111.111.111.222:/data/lsz/code/
参数说明
-a
:归档模式,保留文件的权限、时间戳、软链接等。-v
:显示详细的传输信息。-z
:压缩数据,提高传输速度。--progress
:显示传输进度。- 源路径:
test@111.111.111.111:/data/lsz/code/peft_study/
表示源服务器的路径。 - 目标路径:
target@111.111.111.222:/data/lsz/code/
表示目标服务器的路径。
注意
- 确保两台机器都能通过 SSH 互相访问。
- 需要在目标路径中创建
/data/lsz/code/
,如果不存在,请先创建该路径。
使用 scp
方法
scp
更简单,但缺乏增量传输和进度显示功能。如果文件较少,可以直接用 scp
。
命令
scp -r test@111.111.111.111:/data/lsz/code/peft_study/ target@111.111.111.222:/data/lsz/code/
参数说明
-r
:递归复制整个目录。- 源路径:
test@111.111.111.111:/data/lsz/code/peft_study/
表示源服务器路径。 - 目标路径:
target@111.111.111.222:/data/lsz/code/
表示目标服务器路径。
如何选择?
- 传输效率:文件体积较大或需要断点续传时,用
rsync
。 - 简单任务:文件较少时,用
scp
。
其他建议
在传输前,可以通过 ssh
登录到目标服务器,确保路径 /data/lsz/code/
存在,否则先创建:
ssh target@111.111.111.222
mkdir -p /data/lsz/code/
实际操作过程
第一步:在目标机器上新建路径:mkdir -p /data/lsz/code/
第二步:使用rsync命令传文件
我是使用rsync命令,按照gpt的推荐命令,报错:源主机和目的主机不能都是remote:
rsync -avz --progress test@111.111.111.111:/data/lsz/code/peft_study/ target@111.111.111.222:/data/lsz/code
The source and destination cannot both be remote.
rsync error: syntax or usage error (code 1) at main.c(1301) [Receiver=3.1.3]
因为我现在已经在111.111.111.111这台机器的test用户下,所以不用指定test@111.111.111.111,只需要如下命令,即源主机不需要写ip地址等信息。
rsync -avz --progress /data/lsz/code/peft_study/ target@111.111.111.222:/data/lsz/code/
后记
2024年11月30日14点08分于上海,基于GPT4o大模型生成。