一、sshd
1、概念
在Linux系统中,文件传输常依赖于SSH协议
(Secure Shell),而sshd
(OpenSSH Daemon)是负责处理SSH连接的后台服务程序。通过sshd
,用户可以在加密的通道中进行安全的远程登录、命令执行和文件传输(如scp
、sftp
、rsync
等)。
2、命令
命令 | 说明 |
---|---|
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)命令
1)基础用法
scp [选项] 源文件 目标路径
2)上传本地文件到远程主机
scp [-r] <本地文件> <远程主机用户@远程主机ip:远程主机目录的绝对路径>
示例
我们要先多创建一个克隆机出来模拟远程主机,通过ip a 来查看克隆机的IP地址(这里为192.168.76.129)
lee为要传输的文件名字
运行后远程主机桌面就会显示刚刚传过来的文件lee
3)从远程主机下载文件到本地
scp [-r] <远程主机用户@远程主机ip:远程主机目录的绝对路径> <本地文件>
示例
同样,执行命令后,本地桌面会出现从远程主机下载下来的文件lee
2、rsync
(1)概念
rsync(Remote Sync)是一个高效的文件同步工具,专为增量传输设计。它仅传输源与目标之间的差异部分,大幅减少数据传输量,尤其适合同步大文件或远程备份。
其特点包括:
增量同步:仅传输修改过的文件或文件块,节省时间和带宽。
灵活性:支持本地、远程(通过SSH)、压缩、排除文件、权限保留等。
可靠性:支持断点续传和完整性校验。
多功能:可镜像目录、删除多余文件、实时同步等。
(2)常用选项
选项 | 说明 |
---|---|
-a |
归档模式(保留权限、时间戳、递归同步等,等价于 -rlptgoD ) |
-v |
显示详细传输过程 |
-z |
启用压缩传输(节省带宽) |
-P |
显示进度,并支持断点续传(等价于 --partial --progress ) |
-n |
模拟运行(不实际传输,用于测试) |
-h |
以人类可读格式输出(如KB/MB) |
--delete |
删除目标中存在但源中不存在的文件(保持严格同步) |
--exclude |
排除指定文件或目录(如 --exclude="*.log" ) |
--bwlimit |
限制带宽(单位:KB/s,如 --bwlimit=1000 限制1MB/s) |
(3)命令
1)基本用法
rsync [选项] 源路径 目标路径
2) 上传本地文件到远程主机
rsync [-rlptogD] <本地文件> <远程主机用户@远程主机ip:远程主机目录的绝对路径>
示例
3)从远程主机下载文件到本地
rsync [-rlptogD] <远程主机用户@远程主机ip:远程主机目录的绝对路径> <本地文件>
3、 scp对比rsync
特性 | rsync | scp |
---|---|---|
传输效率 | 增量传输,仅同步差异部分 | 全量传输 |
功能 | 支持删除、排除、压缩、带宽限制等 | 基础文件传输 |
适用场景 | 定期备份、大文件同步、复杂需求 | 单次少量文件快速传输 |
资源占用 | 较高(需计算文件差异) | 较低 |
三、压缩与归档(加快文件传输速度)
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
此时桌面就会出现刚刚归档成功的文件etc.tar
2)tar xf示例
此命令意思为:查看etc.tar文件
etc.tar文件内的文件会显示出来
3)tar rf示例
我们先创建一个文件file,用于观察tar rf指令是如何添加文件的
随后再输入tar rf指令
此命令意思为:将文件file添加并归档到etc.tar中
此时我们用管道|查询归档文件内部(命令:tar tf etc.tar file | tail -n 3)
可以看到file文件已被添加进去
4)tar tf示例
此命令详情请看刚刚的tar rf
2、压缩(gz、bz2、xz、zip)
(1)概念
通过算法减小文件体积(如 .gz
、.xz
),减少存储空间的占用,提升数据传输的效率
(2)常用压缩工具及命令
1)gzip
特点:速度快、压缩率中等,广泛兼容。
压缩文件:
gzip file.txt # 压缩为 file.txt.gz(删除原文件) gzip -k file.txt # 保留原文件 gzip -9 file.txt # 最高压缩率(默认-6)
- 解压文件:
gunzip file.txt.gz # 解压为 file.txt
- 查看内容:
zcat file.txt.gz # 不解压查看内容
- 示例:
2)bzip2
特点:压缩率高于 gzip,速度较慢。
压缩文件:
bzip2 file.txt # 压缩为 file.txt.bz2 bzip2 -9 file.txt # 最高压缩率(默认-9)
- 解压文件:
bunzip2 file.txt.bz2 # 解压为 file.txt
- 查看内容:
bzcat file.txt.bz2 # 不解压查看内容
- 示例:
3)xz
特点:压缩率最高,速度最慢,适合长期存储。
压缩文件:
xz file.txt # 压缩为 file.txt.xz xz -9e file.txt # -e 提高压缩率(牺牲速度)
- 解压文件:
unxz file.txt.xz # 解压为 file.txt
- 查看内容:
xzcat file.txt.xz # 不解压查看内容
- 示例:
4)zip
特点:跨平台兼容(Windows/Linux),支持加密。
压缩文件:
zip archive.zip file1.txt dir1/ # 压缩文件/目录 zip -r archive.zip dir/ # 递归压缩目录 zip -e archive.zip file.txt # 加密压缩(输入密码)
- 解压文件:
unzip archive.zip # 解压到当前目录 unzip archive.zip -d target_dir # 解压到指定目录
- 查看内容:
unzip -l archive.zip # 列出压缩包内容
3、归档压缩一步完成命令
即字面意思,可以把归档操作和压缩操作合为一步来完成,进一步提升效率
(1)gzip
tar zcf etc.tar.gz /etc
tar zxf etc.tar.gz
(2)bzip2
tar jcf etc.tar.bz2 /etc
tar jxf etc.tar.bz2
(3)xz
tar Jcf etc.tar.xz /etc
tar Jxf etc.tar.xz