两台远程Linux服务器之间传输文件的四种方法(scp、rcp、wget、rsync)总结
在日常服务器租用中,有时需要将文件从一台服务器传到另一台服务器,下面给大家介绍四种linux服务器之间传输文件方式。
# 1. rsync
rsync是类unix系统下的数据镜像备份工具,从软件的命名上就可以看出来了——remote sync。它的操作方式和scp和相似,但是比scp强大很多。使用双冒号分割主机名和文件路径时,是使用rsync服务器,这里不做介绍。
命令格式:
rsync [参数] <源地址(用户名@IP地址或主机名)>:<文件路径> <目的地址(用户名 @IP 地址或主机名)>:<文件路径>
1
部分参数
-v, --verbose:详细模式输出,显示传输过程中的详细信息。
-a, --archive:归档模式,相当于-rlptgoD,表示以递归方式传输文件,并保持所有文件属性(不包括-H, -A, -X)。
-z, --compress:在传输过程中压缩文件数据。
--delete:删除那些目标位置(DST)中没有源位置(SRC)的文件。
-e 'ssh -p 30022':指定使用的远程shell程序和端口号,例如使用SSH并通过非默认端口22进行连接。
--exclude=PATTERN:指定排除不需要传输的文件模式。
--include=PATTERN:指定不排除而需要传输的文件模式。
--exclude-from=FILE:排除FILE中指定模式的文件。
--include-from=FILE:不排除FILE中指定模式匹配的文件。
--rsync-path=PATH:指定远程服务器上的rsync命令所在路径信息。
--bwlimit=KBPS:限制I/O带宽,以KBytes per second为单位。
-h, --help:显示帮助信息。
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
常用举例:
rsync -avz username@remote_server:/remote/dir/ /local/dir/ #从远程同步到本地
rsync -avz /local/dir/ username@remote_server:/remote/dir/ #从本地同步到远程
1
2
2
部分举例:
rsync /home/work/source.txt work@192.168.0.10:/home/work/ #把本地的source.txt文件拷贝到192.168.0.10机器上的/home/work目录下
rsync work@192.168.0.10:/home/work/source.txt /home/work/ #把192.168.0.10机器上的source.txt文件拷贝到本地的/home/work目录下
rsync work@192.168.0.10:/home/work/source.txt work@192.168.0.11:/home/work/ #把192.168.0.10机器上的source.txt文件拷贝到192.168.0.11机器的/home/work目录下
rsync -r /home/work/sourcedir work@192.168.0.10:/home/work/ #拷贝文件夹,加-r参数
rsync -r /home/work/sourcedir work@www.myhost.com:/home/work/ #使用主机名
rsync -r -v /home/work/sourcedir work@www.myhost.com:/home/work/ #显示详情,加-v参数
rsync -r -v --exclude sourcedir/notinclude /home/work/sourcedir work@www.myhost.com:/home/work/ #排除子目录,注意:--exclude后面的路径不能为绝对路径,必须为相对路径才可以,否则匹配不上,就不会被排除掉。
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
# 2. scp
scp就是secure copy,是用来进行远程文件拷贝的。数据传输使用 ssh,并且和ssh 使用相同的认证方式,提供相同的安全保证 。
命令格式:
scp [参数] <源地址(用户名@IP地址或主机名)>:<文件路径> <目的地址(用户名 @IP 地址或主机名)>:<文件路径>
1
部分举例:
scp /home/work/source.txt work@192.168.0.10:/home/work/ #把本地的source.txt文件拷贝到192.168.0.10机器上的/home/work目录下
scp work@192.168.0.10:/home/work/source.txt /home/work/ #把192.168.0.10机器上的source.txt文件拷贝到本地的/home/work目录下
scp work@192.168.0.10:/home/work/source.txt work@192.168.0.11:/home/work/ #把192.168.0.10机器上的source.txt文件拷贝到192.168.0.11机器的/home/work目录下
scp -r /home/work/sourcedir work@192.168.0.10:/home/work/ #拷贝文件夹,加-r参数
scp -r /home/work/sourcedir work@www.myhost.com:/home/work/ #使用主机名
scp -r -v /home/work/sourcedir work@www.myhost.com:/home/work/ #显示详情,加-v参数
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
部分参数
-C:压缩传输数据,以减少传输所需的时间和带宽。
-r:递归复制,用于复制整个目录及其内容。
-P(大写P):指定传输的端口号。默认情况下,SSH使用端口22,但可以通过此参数指定其他端口号,特别是当目标主机使用非标准端口时。
-p(小写p):在传输后保留文件的原始属性,如修改时间、访问时间和文件权限。
-q:不显示传输的进度条,用于静默模式传输,不显示任何进度信息。
-l:限制传输时占用的带宽,单位是Kbit/s。这个参数可以帮助管理网络带宽,特别是在带宽有限的网络环境中。
-i:指定身份文件或私钥,用于基于密钥的身份验证,而不是基于密码的验证。
-F:指定使用不同的ssh_config文件,这在需要使用特定的网络配置连接到Linux系统时非常有用。
-B:批处理模式,用于在传输文件时自动处理而不需用户干预。
-S:指定用于加密连接的程序名称。
-v:详细模式,用于在终端屏幕上打印进度信息,便于调试连接、身份验证和配置问题。
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
# 3. wget
wget是一个从网络上自动下载文件的自由工具,支持通过HTTP、HTTPS、FTP三个最常见的TCP/IP协议下载,并可以使用HTTP代理。
命令格式:
wget [参数] ftp://<目标机器ip或主机名>/<文件的绝对路径> #proftpd格式
1
部分举例:
wget ftp://192.168.0.10//home/work/source.txt #从192.168.0.10上拷贝文件夹source.txt
wget ftp://www.myhost.com//home/work/source.txt #使用主机名
wget -nH -P /home/work/ ftp://www.myhost.com//home/work/source.txt #指定本地保存路径,使用参数“-P 路径”或者“--directory-prefix=路径”;-nH, --no-host-directories 不创建主机目录
wget -r -l 0 -nH -P /home/work/ ftp://www.myhost.com//home/work/sourcedir #递归下载sourcedir目录,使用参数-r;参数-l, --level=NUMBER 最大递归深度 (inf 或 0 代表无穷).
wget --cut-dirs=3 -r -l 0 -nH -P /home/work/ ftp://www.myhost.com//home/work/sourcedir #-参数-cut-dirs=NUMBER 忽略 NUMBER层远程目录,本例中将myhost上的sourcedir目录保存到本地的work目录下。
wget --limit-rate=200k --cut-dirs=3 -r -l 0 -nH -P /home/work/ ftp://www.myhost.com//home/work/sourcedir #-参数--limit-rate=RATE 限定下载输率
wget --limit-rate=200k --cut-dirs=3 -r -l 0 -nH -P /home/work/ -X /home/work/sourcedir/notincludedir ftp://www.myhost.com//home/work/sourcedir #排除路径使用-X参数
wget -q --limit-rate=200k --cut-dirs=3 -r -l 0 -nH -P /home/work/ -X /home/work/sourcedir/notincludedir ftp://www.myhost.com//home/work/sourcedir #参数-q表示安静模式,无输出;默认是-v,冗余模式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
部分参数
-V,–version 显示软件版本号然后退出;
-h,–help显示软件帮助信息;
-e,–execute=COMMAND 执行一个 “.wgetrc”命令
-o,–output-file=FILE 将软件输出信息保存到文件;
-a,–append-output=FILE将软件输出信息追加到文件;
-d,–debug显示输出信息;
-q,–quiet 不显示输出信息;
-i,–input-file=FILE 从文件中取得URL;
-t,–tries=NUMBER 是否下载次数(0表示无穷次)
-O –output-document=FILE下载文件保存为别的文件名
-nc, –no-clobber 不要覆盖已经存在的文件
-N,–timestamping只下载比本地新的文件
-T,–timeout=SECONDS 设置超时时间
-Y,–proxy=on/off 关闭代理
-nd,–no-directories 不建立目录
-x,–force-directories 强制建立目录
–http-user=USER设置HTTP用户
–http-passwd=PASS设置HTTP密码
–proxy-user=USER设置代理用户
–proxy-passwd=PASS设置代理密码
-r,–recursive 下载整个网站、目录(小心使用)
-l,–level=NUMBER 下载层次
-A,–accept=LIST 可以接受的文件类型
-R,–reject=LIST拒绝接受的文件类型
-D,–domains=LIST可以接受的域名
–exclude-domains=LIST拒绝的域名
-L,–relative 下载关联链接
–follow-ftp 只下载FTP链接
-H,–span-hosts 可以下载外面的主机
-I,–include-directories=LIST允许的目录
-X,–exclude-directories=LIST 拒绝的目录
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# 4. rcp
目标主机需要事先打开rcp功能,并设置好rcp的权限:把源主机加入到可信任主机列表中,否则无法在源主机上使用rcp远程复制文件到目标主机。
命令格式:
rcp [参数] [源文件] [目标文件]
1
部分参数
-p 保留源文档或目录的属性,包括拥有者,所属群组,权限和时间。
-r 递归处理,将指定目录下的文档和子目录一并处理。
1
2
2
上次更新: 2024/05/29, 17:27:32
- 01
- Node与GLIBC_2.27不兼容解决方案08-19
- 02
- Git清空本地文件跟踪缓存08-13