前言:sshd
在Linux系统中,文件传输常依赖于SSH协议
(Secure Shell),而sshd
(OpenSSH Daemon)是负责处理SSH连接的后台服务程序。通过sshd
,用户可以在加密的通道中进行安全的远程登录、命令执行和文件传输(如scp
、sftp
、rsync
等)。
相关命令
命令 | 说明 |
systemctl start sshd | 启动 sshd 服务 |
systemctl stop sshd | 停止 sshd 服务 |
systemctl restart sshd | 重启 sshd 服务(中断现有连接) |
systemctl reload sshd | 重载配置文件(不中断连接) |
systemctl status sshd | 查看服务运行状态 |
一、系统文件传输方法
1、scp
(1)概念
scp
(Secure Copy Protocol)是Linux/Unix系统中基于SSH协议的命令行文件传输工具,通过加密通道在本地与远程主机之间安全传输文件或目录。其底层依赖sshd
服务运行,适合快速、简单的文件传输任务。
(2)常用选项
选项 | 说明 |
-r | 递归复制目录(传输文件夹必选) |
-C | 启用压缩(适合低速网络) |
-v | 显示详细传输过程(调试用) |
-i | 指定私钥文件(密钥认证时使用) |
-l | 限制带宽(单位:Kbit/s,如 -l 1000 限制1Mbps) |
-p | 保留文件修改时间、权限等属性 |
(3)命令
scp 文件的绝对路径 用户名@IP:要传送到的目录的绝对路径 上传
scp 用户名@IP:要下载的文件的绝对路径 要下载到本机目录的绝对路径 下载
注:scp在进行文件传输时,传送后若与当前系统保留权限不符,将会自动对权限进行降低。
上传示例:
我们要先多创建一个克隆机出来模拟远程主机,通过ip a 来查看克隆机的IP地址(此处为192.168.188.129)
首先在一号机上创建文件czg
随后输入命令将文件传输到二号机
下载示例
执行命令后,本地桌面会出现从远程主机下载下来的文件czg
2、rsync
(1)概念
rsync(Remote Sync)是一个高效的文件同步工具,专为增量传输设计。它仅传输源与目标之间的差异部分,大幅减少数据传输量,尤其适合同步大文件或远程备份。
对于文件较多文件“scp”命令就显得比较慢了,这时候就需要“rsync”命令,对文件进行同步
(2)特点
传输高效
- 增量传输:仅传变化数据,减少传输量。
- 压缩传输:降低数据量,省带宽、提速度。
多功能
- 多场景适用:本地、远程及跨平台同步均可。
- 多种同步模式:支持单向、双向等。
- 特殊文件处理:涵盖符号链接等特殊文件。
- 属性保留:同步后文件属性不变。
- 可排除文件:灵活设置不传输内容。
安全可靠
- 加密传输:可借助 ssh 等加密方式。
- 匿名 / 认证传输:满足不同安全需求。
使用便利
- 使用灵活:支持命令行及守护进程模式,选项丰富。
(3)常用选项
选项 | 说明 |
-a | 归档模式(保留权限、时间戳、递归同步等,等价于 -rlptgoD ) |
-v | 显示详细传输过程 |
-z | 启用压缩传输(节省带宽) |
-P | 显示进度,并支持断点续传(等价于 --partial --progress ) |
-n | 模拟运行(不实际传输,用于测试) |
-h | 以人类可读格式输出(如KB/MB) |
--delete | 删除目标中存在但源中不存在的文件(保持严格同步) |
--exclude | 排除指定文件或目录(如 --exclude="*.log" ) |
--bwlimit | 限制带宽(单位:KB/s,如 --bwlimit=1000 限制1MB/s) |
(4)命令
1)基本用法
rsync [选项] 源路径 目标路径
2) 上传本地文件到远程主机
rsync [-rlptogD] <本地文件> <远程主机用户@远程主机ip:远程主机目录的绝对路径>
示例 :
3)从远程主机下载文件到本地
rsync [-rlptogD] <远程主机用户@远程主机ip:远程主机目录的绝对路径> <本地文件>
3、 scp对比rsync
scp | rsync | |
传输模式 | 基于 SSH,全量传输文件,每次复制整个文件 | 支持增量传输,仅传输源和目标有差异部分 |
传输效率 | 小文件传输速度快、CPU 利用率低;大文件或大量文件传输时效率低 | 大文件和大量文件传输效率高,支持压缩传输 |
功能特性 | 功能单一,主要用于简单文件复制,不支持传输中断恢复、计划任务等 | =支持本地和远程同步,可处理特殊文件,保留文件元数据,支持传输中断恢复、计划任务等 |
适用场景 | 少量小文件或敏感数据的一次性传输,如临时传输机密文件 | 定期数据备份、大文件及大量文件传输、服务器间数据同步等,如网站数据备份、数据库同步 |
二、压缩与归档(加快文件传输速度)
1、归档(tar)
(1)概念
归档(Archiving)是将多个文件或目录打包成一个单一文件的过程,常用于备份、传输或压缩存储。
(2)常用的参数表
主要参数:
参数 | 说明 | 示例 |
-c | 创建归档文件 | tar -cvf archive.tar files |
-x | 解压归档文件 | tar -xvf archive.tar |
-t | 查看归档内容 | tar -tvf archive.tar |
-r | 追加文件到归档 | tar -rvf archive.tar new_file |
-u | 更新归档(仅添加比归档内更新的文件) | tar -uvf archive.tar updated_file |
常用功能选项
参数 | 说明 | 示例 |
-v | 显示详细过程(列出处理的文件) | tar -cvf archive.tar dir/ |
-f | 指定归档文件名(必须紧跟文件名) | tar -cvf output.tar dir/ |
-C | 切换目录(解压或打包前切换路径) | tar -xvf archive.tar -C /target/dir |
--exclude | 排除文件/目录(支持通配符) | tar -cvf archive.tar --exclude="*.log" dir/ |
--wildcards | 通配符匹配(配合 -t 查看特定文件) |
tar -tvf archive.tar --wildcards "*.txt" |
-k | 保留现有文件(解压时不覆盖同名文件) | tar -xvkf archive.tar |
-p | 保留文件权限(默认解压时可能丢失) | tar -cvpf archive.tar dir/ |
(3)命令
命令 | 说明 |
tar -cvf archive.tar file1 dir1 | 创建归档文件(-c : 创建,-v : 显示过程,-f : 指定文件名) |
tar -xvf archive.tar | 解压归档文件(-x : 解压) |
tar -tvf archive.tar | 查看归档文件内容 |
示例:
1)tar cf示例
将etc/和mnt/的文件创建(c)归档并命名(f)为etc.tar
2)tar xf示例
此命令意思为:查看etc.tar文件
etc.tar文件内的文件会显示出来
3)tar rf示例
2、压缩(gz、bz2、xz、zip)
zip
zip -r 文件名.zip 文件名 压缩成zip格式
unzip 文件名.zip 解压zip格式压缩包
gz
gzip 文件名 压缩成gz格式
gunzip 文件名.gz 解压gz格式压缩包
bz2
bzip2 文件名 压缩成bz2格式
bunzip2 文件名.bz2 解压bz2格式压缩包
xz
xz 文件名 压缩成xz格式
unxz 文件名 解压xz格式压缩包
注:文件压缩中zip格式压缩后文件大小最大,xz最小。相应的xz需要的时间也最长。所以在压缩的时候需要考虑以下压缩大小与时间的需求。