详细介绍:【Linux】文件管理:压缩、归档与传输
本专栏文章持续更新,新增内容使用蓝色表示。
一、压缩:减小文件体积
在日常工作中,处理大型文件时,压缩技术可以显著减少文件大小,节省存储空间和传输时间。
补充:相同大小的文件,文件数目越多越耗时,因为文件系统的底层是B+树,文件数越多,需要旋转平衡的次数就越多。
常用压缩工具
工具 | 压缩命令 | 解压命令 | 特点 |
---|---|---|---|
gzip | gzip filename | gunzip filename.gz | 速度快,使用广泛 |
bzip2 | bzip2 filename | bunzip2 filename.bz2 | 压缩比高,速度较慢 |
xz | xz filename | unxz filename.xz | 压缩比最高,速度最慢 |
zip | zip archive.zip file1 file2 | unzip archive.zip | 跨平台兼容性好 |
# 使用gzip压缩文件
gzip filename.txt
# 压缩后原文件会被删除,生成filename.txt.gz文件
# 解压缩
gunzip filename.txt.gz
# 使用zip压缩(保留原文件)
zip archive.zip file1.txt file2.txt
# 解压zip文件
unzip archive.zip
二、归档:文件打包管理
归档不同于压缩,它只是将多个文件打包成一个文件,不会减小总体积,但便于管理和传输。
tar命令常用参数
选项 | 全称与功能说明 |
---|---|
c | create - 创建新的归档文件 |
x | extract - 从归档中提取文件 |
t | list - 列出归档内容 |
v | verbose - 显示处理过程的详细信息 |
f | file - 指定归档文件名 |
z | gzip - 通过 gzip 过滤归档(压缩或解压 .tar.gz) |
j | bzip2 - 通过 bzip2 过滤归档(压缩或解压 .tar.bz2) |
J | xz - 通过 xz 过滤归档(压缩或解压 .tar.xz) |
重要提示:展开归档时,如果本地目录存在同名文件,会被静默覆盖且无提示!建议先检查归档内容:
# 查看归档内容
tar -tf archive.tar
# 解压到指定目录避免覆盖
tar -xf archive.tar -C /target/directory/
三、压缩+归档
tar 命令支持在打包时直接压缩。
# 使用gzip压缩并创建归档
tar -zcf archive.tar.gz directory/
# 使用bzip2解压缩归档
tar -jxf archive.tar.bz2
# 使用xz压缩并查看详细信息
tar -Jcfv archive.tar.xz directory/
四、文件传输:跨设备数据迁移
4.1 SCP - 文件复制
scp 可以将文件复制到远程或从中复制到本机,但是由于历史原因,设计时未考虑安全问题,所以不太推荐使用。而且 scp 复制时会始终复制所有内容,后面介绍的 rsync 命令仅同步已更改的内容,效率更高。
# 上传文件到远程服务器
scp local_file.txt user@remotehost:/path/to/destination
# 下载文件
scp user@remotehost:/path/to/file.txt local_destination
# 递归传输目录
scp -r local_directory user@remotehost:/remote/path
4.2 SFTP - 交互式文件传输
stfp 相当于 ftp 的加密版本。
连接成功后,终端会显示 sftp> 提示符,可以输入 help 获取可用命令。如果在 sftp 会话中,要在本机上运行命令,可在命令前加 l 。示例如下:
# 连接SFTP服务器
sftp user@remotehost
# 常用命令
ls # 列出远程文件
lls # 列出本地文件
cd # 切换远程目录
lcd # 切换本地目录
put # 上传文件/目录(支持-r递归)
get # 下载文件/目录(支持-r递归)
mkdir # 创建远程目录
rm # 删除远程文件
exit # 退出sftp
4.3 RSYNC - 增量传输
rsync 命令是在系统之间安全复制文件,它支持增量传输,即首次传输完整数据,后续只传输变化部分。
# 基本用法(本地到本地)
rsync -av source/ destination/
# 同步到远程服务器
rsync -av local_dir/ user@remotehost:remote_dir/
# 从远程服务器同步
rsync -av user@remotehost:remote_dir/ local_dir/
选项 | 全称与功能说明 |
---|---|
-a | archive - 归档模式,相当于 -rlptgoD(递归、保留链接、权限、时间戳、组、所有者、设备文件) |
-v | verbose - 输出详细信息 |
-z | compress - 在传输过程中进行压缩 |
-r | recursive - 递归进入目录 |
-l | links - 保留符号链接 |
-p | perms - 保留权限 |
-t | times - 保留修改时间 |
-D | devices & specials - 保留设备文件和特殊文件 |
-n | dry-run - 试运行,只显示会做什么而不实际传输 |
--progress | 显示传输进度 |
--delete | delete - 从目标目录中删除源目录中没有的文件(使两边完全一致) |
如有问题或建议,欢迎在评论区中留言~