【Linux笔记】文件的传输(scp、rsync、归档、压缩)

发布于:2025-04-10 ⋅ 阅读:(39) ⋅ 点赞:(0)

一、sshd

1、概念

在Linux系统中,文件传输常依赖于SSH协议(Secure Shell),而sshdOpenSSH Daemon)是负责处理SSH连接的后台服务程序。通过sshd,用户可以在加密的通道中进行安全的远程登录、命令执行和文件传输(如scpsftprsync等)。

2、命令

命令 说明
systemctl start sshd 启动 sshd 服务
systemctl stop sshd 停止 sshd 服务
systemctl restart sshd 重启 sshd 服务(中断现有连接)
systemctl reload sshd 重载配置文件(不中断连接)
systemctl status sshd 查看服务运行状态

二、系统文件传输方法 

1、scp

(1)概念

scpSecure 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