Linux学习----归档和传输文件实用指南
在红帽企业 Linux 系统管理中,归档和传输文件能帮助系统管理员高效管理文件备份、安全传输数据以及实现跨系统文件同步,为 Linux 系统运维工作奠定关键基础。
一、管理压缩的 tar 存档:文件归档核心技能
tar 命令是 Linux 系统中归档和压缩文件的核心工具,支持多种压缩方式,能满足不同场景下的文件备份需求,其关键操作涵盖以下方面:
1. tar 命令核心选项解析
tar 命令的功能实现依赖各类选项组合,不同选项对应不同操作,常用核心选项如下表所示:
选项 | 英文全称 | 功能描述 |
---|---|---|
-c | --create | 创建新的存档文件,是生成 tar 包的基础选项 |
-x | --extract | 从已有的存档文件中提取文件,用于恢复数据 |
-t | --list | 列出存档文件中的内容,无需提取即可查看包内文件结构 |
-v | --verbose | 以详细模式运行,显示归档或提取过程中的文件名称,便于跟踪操作 |
-f | --file= | 指定存档文件的名称,该选项后必须紧跟存档文件名,是 tar 命令的必选参数之一 |
-p | --preserve-permissions | 提取文件时保留原始文件和目录的权限,避免因 umask 设置导致权限丢失 |
-z | --gzip | 使用 gzip 压缩算法,生成的存档文件后缀通常为.tar.gz 或.tgz,压缩速度快、兼容性强 |
-j | --bzip2 | 采用 bzip2 压缩算法,存档文件后缀为.tar.bz2,压缩率高于 gzip,但兼容性稍弱 |
-J | --xz | 运用 xz 压缩算法,存档文件后缀为.tar.xz,压缩率在三种方式中最高,适合对压缩率要求高的场景 |
2. tar 命令关键操作实践
创建基础存档:将指定文件或目录打包成未压缩的 tar 存档。例如,将 file1、file2、file3 三个文件归档为 archive.tar,命令为
tar -cf archive.tar file1 file2 file3
。需注意,ACL 和 SELinux 等高级权限不会自动存储到 tar 存档中,需添加--xattrs
选项才能保留。查看存档内容:无需提取存档,即可查看其中的文件列表。如查看 /root/etc.tar 存档的内容,命令为
tar -tf /root/etc.tar
,执行后会列出存档内的目录结构与文件名称。提取存档文件:从存档中恢复文件时,可结合 - p 选项保留权限。例如,将 /root/myscripts.tar 存档提取到 /root/scripts 目录,需先创建目标目录
mkdir /root/scripts
,进入该目录cd /root/scripts
,再执行提取命令tar -xpf /root/myscripts.tar
。创建压缩存档:根据需求选择合适的压缩算法创建压缩存档。使用 gzip 压缩 /etc 目录生成 /etcbackup.tar.gz,命令为
tar -czf /root/etcbackup.tar.gz /etc
;用 bzip2 压缩 /var/log 目录生成 logbackup.tar.bz2,命令为tar -cjf /root/logbackup.tar.bz2 /var/log
;通过 xz 压缩 /etc/ssh 目录生成 sshconfig.tar.xz,命令为tar -cJf /root/sshconfig.tar.xz /etc/ssh
。提取压缩存档:针对不同压缩格式的存档,需使用对应选项提取。提取 gzip 格式的 /etcbackup.tar.gz,命令为
tar -xzf /root/etcbackup.tar.gz
;提取 bzip2 格式的 logbackup.tar.bz2,命令为tar -xjf /root/logbackup.tar.bz2
;提取 xz 格式的 sshbackup.tar.xz,命令为tar -xJf /root/sshbackup.tar.xz
。
二、系统间安全传输文件:SSH 协议下的两种方案
在跨系统文件传输场景中,基于 SSH 协议的 scp 和 sftp 命令是安全可靠的选择,它们通过 SSH 服务器进行身份验证,并对传输数据加密,保障数据传输安全。
1. Secure Copy(scp):简单高效的文件传输
scp 命令可实现本地与远程系统间的文件或目录传输,操作简洁,核心功能如下:
单个 / 多个文件传输:从本地向远程传输文件时,格式为
scp 本地文件路径 远程用户@远程主机:远程目标路径
。例如,将本地的 /etc/yum.conf 和 /etc/hosts 文件传输到 remoteuser 用户所在的 remotehost 主机的 /home/remoteuser 目录,命令为scp /etc/yum.conf /etc/hosts remoteuser@remotehost:/home/remoteuser
,执行后输入远程用户密码即可开始传输。从远程向本地传输文件时,格式为scp 远程用户@远程主机:远程文件路径 本地目标路径
,如将 remotehost 主机的 /etc/hostname 文件传输到本地 /home/user 目录,命令为scp remoteuser@remotehost:/etc/hostname /home/user
。目录传输:传输目录需添加 - r 选项(递归传输),格式与文件传输类似。例如,从远程 remoteuser 用户所在主机的 /var/log 目录传输到本地 /tmp 目录,命令为
scp -r remoteuser@remotehost:/var/log /tmp
,输入密码后将递归传输整个目录及其中的文件。
2. 安全文件传输程序(sftp):交互式的文件管理
sftp 命令提供类似 FTP 的交互式操作界面,支持在本地与远程系统间进行文件传输、目录管理等操作,功能更灵活,常用操作如下:
建立 sftp 连接:通过
ssh远程用户@远程主机
命令建立连接,例如ssh remoteuser@remotehost
,输入远程用户密码后,进入 sftp 交互模式,提示符变为sftp>
。基础文件操作命令:在 sftp 交互模式中,可使用多种命令管理文件。
ls
查看远程当前目录文件,cd
切换远程目录,mkdir
在远程创建目录,rmdir
删除远程空目录,pwd
显示远程当前目录路径,put 本地文件路径
将本地文件上传到远程当前目录,get 远程文件路径
将远程文件下载到本地当前目录,exit
退出 sftp 会话。本地命令执行:在 sftp 会话中,若需执行本地系统命令,只需在命令前添加 “l” 前缀。例如,
lpwd
显示本地当前目录路径,lls
查看本地当前目录文件。目录递归传输:上传本地目录到远程时,使用
put -r 本地目录路径
命令;下载远程目录到本地时,使用get -r 远程目录路径
命令。例如,上传本地 directory 目录到远程当前目录,命令为put -r directory
,会递归上传目录内所有文件和子目录。非交互式文件获取:无需进入交互式会话,可直接通过单条命令获取远程文件,格式为
scp 远程用户@远程主机:远程文件路径 本地目标路径
,例如scp remoteuser@remotehost:/home/remoteuser/remotefile ./
,直接将远程 remotefile 文件下载到本地当前目录。
三、系统间文件同步:rsync 的高效同步方案
rsync 命令是跨系统文件同步的高效工具,其核心优势在于采用差异化同步算法,仅同步文件的更改部分,而非复制整个文件,大幅减少数据传输量,提高同步效率,尤其适合大文件或频繁更新文件的同步场景。
rsync 核心选项与功能
rsync 命令的常用选项及功能如下:
模拟同步(-n):使用 - n 选项可进行模拟同步操作,仅显示需要同步的文件清单,不实际执行同步,便于提前确认同步内容是否正确,避免误操作。
详细模式(-v):-v 选项(--verbose)开启详细模式,同步过程中显示文件同步状态、传输速度等详细信息,便于跟踪同步进度和排查问题。
归档模式(-a):-a 选项(--archive)是 rsync 的核心选项,开启后会自动启用多个子选项,实现全面的目录同步,所包含的子选项及功能如下表:
子选项 | 英文全称 | 功能描述 |
---|---|---|
-r | --recursive | 以递归方式同步整个目录树,包括所有子目录和文件 |
-l | --links | 同步符号链接文件,保留链接属性 |
-p | --perms | 保留文件和目录的权限设置 |
-t | --times | 保留文件的时间戳信息,确保同步后文件时间与源文件一致 |
-g | --group | 保留文件所属的组权限 |
-o | --owner | 保留文件的所有者信息 |
-D | --devices | 同步设备文件,适用于系统文件同步场景 |
此外,-H 选项可保留硬链接,-A 选项保留 ACL(访问控制列表)权限,-X 选项保留 SELinux 上下文,根据实际需求组合使用这些选项,可实现更全面的同步效果。
3. rsync 同步操作实践
本地目录同步:将本地 /var/log 目录同步到 /tmp 目录,命令为
rsync -av /var/1og /tmp
,-a 选项确保目录递归同步并保留各类属性,-v 选项显示同步详情。执行后,rsync 会仅同步 /var/log 与 /tmp/log 之间有差异的文件部分,输出同步的文件列表、数据传输量、传输速度等信息。远程目录同步:将远程 remotehost 主机的 /var/log 目录同步到本地 /tmp 目录,命令为
rsync -av remotehost:/var/1og /tmp
,输入远程主机对应用户密码后,开始远程同步操作。同步过程中,同样仅传输差异数据,显著提升同步效率,尤其适合跨网络的大目录同步场景。
总结
tar 命令满足本地文件归档与压缩需求,支持多种压缩算法适配不同场景;scp 和 sftp 基于 SSH 协议,分别提供简单高效和交互式的安全文件传输方案;rsync 则通过差异化同步算法,实现跨系统文件的高效同步。
掌握这些工具的使用方法与核心技巧,能帮助系统管理员高效完成 Linux 系统中的文件管理工作,提升系统运维效率与数据安全性,为后续更复杂的系统管理任务打下坚实基础。