Linux主机之间传输文件的四种主流方式

经常使用,今天顺便整理一下~

1、scp

scpsecure copy 的简写,是linux系统下基于 ssh(Secure Shell)登陆进行安全的远程文件拷贝命令,scp 命令可以在 linux 服务器之间复制文件和目录。

当服务器硬盘变为只读 read only system 时,用 scp 可以把文件移出来。另外,scp 占用非常小的系统资源,不会提高多少系统负荷,基本不影响系统正常使用。

命令格式

scp [参数] <源地址(用户名@IP地址或主机名)>:<文件路径> <目的地址(用户名 @IP 地址或主机名)>:<文件路径> 

常用参数
-p 保留原文件的修改时间,访问时间和访问权限

-r 递归复制整个目录

-v 详细方式显示输出

-C 允许压缩

-P 指定数据传输用到的端口号

实例

# 把本地的 source.txt 文件拷贝到 192.168.8.8 机器上的 /home/user 目录下
scp /home/codedancing/source.txt [email protected]:/home/user/

# 把 192.168.8.8 机器上的 source.txt 文件拷贝到本地的 /home/codedancing 目录下
scp [email protected]:/home/user/source.txt /home/codedancing/

# 把 192.168.8.8 机器上的 source.txt 文件拷贝到 192.168.8.9 机器的 /home/user 目录下
scp [email protected]:/home/user/source.txt [email protected]:/home/user/

# 拷贝本地文件夹
scp -r /home/codedancing/sourcedir [email protected]:/home/user/

# 使用指定的主机名
scp -r /home/codedancing/sourcedir [email protected]:/home/user/

2、wget

wget 是一个 Linux 环境下的一个下载文件工具,只能从远程机器将文件或文件夹下载到本地,支持通过HTTP、HTTPS、FTP三个最常见的TCP/IP协议下载,并可以使用HTTP代理。

命令格式

wget [参数] [URL地址]

实例

# 使用wget下载单个文件
wget http://www.stk.com/wordpress-3.1-zh_CN.zip

# 从192.168.8.8上拷贝文件夹source.txt
wget ftp://192.168.8.8//home/user/source.txt

# 使用主机名 
wget ftp://www.myhost.com//home/user/source.txt

# 使用 wget -O 下载并以指定的文件名保存
wget -O wordpress.zip http://www.stk.com/download.aspx?id=1080

# 使用 wget -b 后台下载
wget -b http://www.stk.com/wordpress-3.1-zh_CN.zip

#指定本地保存路径,使用参数“-P 路径”或者“--directory-prefix=路径”;-nH, --no-host-directories 不创建主机目录
wget -nH -P /home/codedancing/ ftp://www.myhost.com//home/user/source.txt  

3、rsync

rsync 命令是一个远程数据同步工具,可快速同步多台主机间的文件。rsync 使用所谓的 “ rsync 算法 ” 来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。但当小文件众多的情况下,rsync 会导致硬盘 I/O 比较高。

命令格式

rsync [参数] <源地址(用户名@IP地址或主机名)>:<文件路径> <目的地址(用户名 @IP 地址或主机名)>:<文件路径> 

实例

# n把本地的 source.txt 文件拷贝到 192.168.8.8 机器上的 /home/user 目录下
rsync /home/codedancing/source.txt [email protected]:/home/user/  

# 把 192.168.8.8 机器上的 source.txt 文件拷贝到本地的 /home/codedancing 目录下
rsync [email protected]:/home/user/source.txt /home/codedancing/  

# 把 192.168.8.8 机器上的 source.txt 文件拷贝到 192.168.8.9 机器的 /home/work 目录下
rsync [email protected]:/home/user/source.txt [email protected]:/home/user/  

# 拷贝文件夹
rsync -r /home/work/sourcedir [email protected]:/home/work/

# 使用主机名   
rsync -r /home/work/sourcedir [email protected]:/home/work/  

# 显示详情,加-v参数
rsync -r -v /home/work/sourcedir [email protected]:/home/work/  

# 排除子目录,注意:--exclude后面的路径不能为绝对路径,必须为相对路径才可以,否则匹配不上,就不会被排除掉。
rsync -r -v --exclude sourcedir/notinclude /home/work/sourcedir [email protected]:/home/work/  

4、rcp

rcpremote file copy 的缩写,该命令用于远程复制文件或目录。

如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到最后的目录中,系统管理员需要事先把源主机加入到可信任主机列表中,否则无法在源主机上使用rcp远程复制文件到目标主机。

命令格式

rcp [参数] <源地址(用户名@IP地址或主机名)>:<文件路径> <目的地址(用户名 @IP 地址或主机名)>:<文件路径> 

常用参数
-r 递归地把源目录中的所有内容拷贝到目的目录中。要使用这个选项,目的必须是一个目录

-p 保留原文件的修改时间,访问时间和访问权限

-x 为传送的所有数据打开DES加密,这会影响响应时间和CPU利用率,但可以提高安全性。

-D 指定远程服务器的端口号

实例

# 将当前目录下的 source.txt 文件复制到主机 192.168.8.8 的 /home/root/dir/ 目录下
rcp source.txt [email protected]:/home/root/dir/

# 将当前目录下的多个文件复制到主机 192.168.8.8 的 /home/root/dir/ 目录下
rcp source1.txt source2.txt source3.txt [email protected]:/home/root/dir/

# 将远程主机指定目录的文件拷贝到本地目录
rcp -r [email protected]:/home/root/dir/test/ /home/root/dir/

# 将多个文件从多个远程源复制到使用不同用户名的远程目标中
rcp [email protected]:/home/root/dir/source1.txt [email protected]:/home/zhangsan/dir/source2.txt [email protected]:/home/lisi/dir/
发布了21 篇原创文章 · 获赞 6 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/codedancing/article/details/103779417