服务器之间常用文件传输命令-scp-rsync

本文介绍了在服务器间常用的scp和rsync命令,包括scp的远程复制(支持Windows和Linux,自定义端口和目录)、rsync的远程同步(区分SSH和rsync协议,支持增量同步和选项参数),并详细列举了各种选项的用法和应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

服务器间传输文件常用命令

由于要经常在本地主机与服务器之间,以及服务器与服务器之间传输文件,虽然目前大多数ssh类软件都已经支持了sftp功能,但是这些功能在传大量小文件的文件夹时不是很好用,而且我用的比较多的xftp经常会卡死,而且在服务器与服务器之间传输文件就没有那么好用的图形化程序,所以后面我就逐渐习惯用命令行来传输数据了,一般我常常使用的scp和rsync这两条命令

scp 远程复制命令(Windows 和 linux都支持)

#scp是cp的升级形式,可以实现远程主机之间的文件复制
#从本地复制到远程,-P指定传输端口,默认端口是22
#如果需要传输文件夹使用 -r 参数
scp -P port file_path user_name@host:save_path
#从远程复制到本地
scp -P port user_name@host:file_path save_path

rsync 远程同步命令

#rsync 能够快速比较两个目录之间差异进而实现只复制少量数据就可以实现目录间文件的同步

rsync options source destination

#其中source 表示源地址,destination表示目的地址,执行时将source数据同步到destination上
#这里源地址和目的地址至少有一个是本地地址,即rsync不支持远程服务器和远程服务器之间的文件复制

#rsync中支持2种协议,一种是ssh协议,一个是rsync协议,默认使用ssh协议
#当远程地址中以 user@host:path 则表示ssh协议
#当远程地址中以 user@host::path 则表示使用rsync协议

#这里我们值介绍常见的使用ssh的方式进行同步,使用rsync协议的暂时使用不上,所以先挖个坑

#这是最常见的一种用法-av参数下面列表中有说明,这里默认使用了ssh协议,并且默认端口是22
#远程作为目标,使得远程与本地一致
rsync -av local_dir root@xx.xx.xx.xx:./remote_dir
#本地作为目标,使得本地与远程一致
rsync -av  root@xx.xx.xx.xx:./remote_dir local_dir

#当需要指定端口时,只需要使用-e选项即可
rsync  -e 'ssh -p port' -av local_dir root@xx.xx.xx.xx:./remote_dir

#其中--delete参数也还是经常会使用的参数,表示当目标对象中存在src中不存在的文件时,删除该文件
rsync -av --delete local_dir root@xx.xx.xx.xx:./remote_dir

#日常使用时还可以加上  -z  选项来在同步过程中使用压缩机制加快传输
rsync -azv --delete local_dir root@xx.xx.xx.xx:./remote_dir

#--exclude path 可以指定不需要进行同步的文件和文件夹
rsync -azv --exclude local_dir/file  local_dir root@xx.xx.xx.xx:./remote_dir
#不同步localdir下的某个文件或者文件夹


rsync也可以用来同步本地文件夹,做备份一类的工作

OPTION选项功能
-a这是归档模式,表示以递归方式传输文件,并保持所有属性,它等同于-r、-l、-p、-t、-g、-o、-D 选项。-a 选项后面可以跟一个 --no-OPTION,表示关闭 -r、-l、-p、-t、-g、-o、-D 中的某一个,比如-a --no-l 等同于 -r、-p、-t、-g、-o、-D 选项。
-r表示以递归模式处理子目录,它主要是针对目录来说的,如果单独传一个文件不需要加 -r 选项,但是传输目录时必须加。
-v表示打印一些信息,比如文件列表、文件数量等。
-l表示保留软连接。
-L表示像对待常规文件一样处理软连接。如果是 SRC 中有软连接文件,则加上该选项后,将会把软连接指向的目标文件复制到 DEST。
-p表示保持文件权限。
-o表示保持文件属主信息。
-g表示保持文件属组信息。
-D表示保持设备文件信息。
-t表示保持文件时间信息。
–delete表示删除 DEST 中 SRC 没有的文件。
–exclude=PATTERN表示指定排除不需要传输的文件,等号后面跟文件名,可以是通配符模式(如 *.txt)。
–progress表示在同步的过程中可以看到同步的过程状态,比如统计要同步的文件数量、 同步的文件传输速度等。
-u表示把 DEST 中比 SRC 还新的文件排除掉,不会覆盖。
-z加上该选项,将会在传输过程中压缩。
### 使用 Rsync 实现服务器文件传输 #### 基础安装路径与默认设置 Rsync 安装完成后,默认位于 `/usr/local/rsync/bin` 下,这表示如果通过包管理器或其他方式安装了该软件,则可能需要调整环境变量或直接指定完整路径来调用它[^1]。 #### 工作模式概述 Rsync 支持多种工作模式,能够满足不同的需求场景。对于服务器间的文件同步任务来说,既可以用于本地到远程的数据迁移,也能处理跨网络的不同主机之间的资料交换;不过需要注意的是,两个远端机器直接交互并不属于其设计初衷支持的操作范围之内——这类情况建议采用 SCP 或其他专门为此目的而生的技术方案解决[^2]。 #### SSH 加密通道下的安全传输实例 为了保障通信过程中的安全性并利用现有的SSH服务作为基础架构的一部分,在执行实际操作前应先确认目标站点已开放相应权限允许此类连接建立。下面给出了一条命令示范如何借助于SSH协议加密保护机制来进行单个文本文件由一台Linux设备向另一台相同操作系统平台上的特定位置实施传送: ```bash rsync -avz -e 'ssh -p 873' /home/soft/aaa.txt [email protected]:/home/soft/ ``` 这里 `-a`, `-v`, 和 `-z` 参数分别代表存档模式(保持原有属性不变), 显示详细进度报告, 及启用压缩算法减少带宽占用;同时指定了自定义的SSH端口号(`-p`)以及源文件和目的地的具体路径[^3]。 #### 配置密码验证以简化自动化流程 当频繁地在固定配对节点间定期更新大量静态资源时,手动输入认证凭据显然不够高效便捷。此时可以通过创建专用的身份凭证存储文件,并赋予恰当读写许可级别的方式绕过这一障碍: ```bash cat > /etc/rsync.passwd << EOF xxxxxxxxxxx EOF chmod 640 /etc/rsync.passwd ``` 随后便可以在发起请求的时候附加参数告知程序去哪里查找这些必要的登录信息片段而不必每次都停下来等待人工干预: ```bash rsync -avzo --no-compress demo.txt user1@server_ip::backup/demo1.txt --password-file=/etc/rsync.passwd ``` 上述例子中还额外加入了 `--no-compress` 来防止不必要的性能损耗,因为某些情况下原始数据本身已经经过良好优化无需再做进一步编码转换即可达到满意的效率指标[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值