一、文件同步工具 rsync:“智能复制” 文件(只传变化的部分)
实际工作中,经常需要 “把本地文件同步到服务器”“备份文件到移动硬盘”—— 用cp
命令每次都复制全部内容(慢且费空间),而rsync
是 “智能复制”:只传输 “变化的部分”(比如文件改了一行,只传这一行),速度快、省流量,像 “微信传文件,只传新内容”。
1. rsync 的核心优势(用例子秒懂)
- 你有一个 1GB 的
backup.tar.gz
文件,今天修改了其中 10MB 的内容:- 用
cp
复制:会重新传 1GB,慢; - 用
rsync
复制:只传变化的 10MB,快很多。
- 用
2. 实操:用 rsync 同步本地文件(先练手,再学远程同步)
步骤 1:安装 rsync(大部分系统默认已安装,没装的话)
bash
sudo apt install rsync # 输入密码后按y
步骤 2:创建 “源目录” 和 “目标目录”(模拟同步场景)
bash
cd ~/linux_study
# 创建源目录(要同步的内容)
mkdir source_dir
echo "这是源文件1" > source_dir/file1.txt
echo "这是源文件2" > source_dir/file2.txt
# 创建目标目录(同步到这里)
mkdir target_dir
步骤 3:基础同步:把源目录内容同步到目标目录
bash
# 命令格式:rsync -av 源路径 目标路径
rsync -av source_dir/ target_dir/
- 选项解释:
-a
:“归档模式”(递归同步 + 保留权限 / 时间等属性,最常用);-v
:“详细输出”(显示同步了哪些文件,心里有数);source_dir/
:源目录后加/
表示 “同步目录里的内容”(不加/
会同步目录本身);target_dir/
:目标目录(不存在会自动创建)。
效果:终端会显示 “同步了 file1.txt 和 file2.txt”,查看目标目录:
bash
ls target_dir/ # 会看到和source_dir一样的文件
4. 进阶:同步 “变化的文件”(体现 rsync 的智能)
步骤 1:修改源目录的一个文件(模拟 “文件更新”)
bash
echo "给file1.txt加一行新内容" >> source_dir/file1.txt # 修改file1.txt
步骤 2:再次执行 rsync 同步
bash
rsync -av source_dir/ target_dir/
效果:终端会显示 “只同步了 file1.txt”(file2.txt 没变化,不传输),验证目标目录的 file1.txt:
bash
cat target_dir/file1.txt # 会包含新增的内容,说明同步成功
5. 扩展:同步文件到远程服务器(工作常用,用 SSH 通道)
如果有另一台服务器(或虚拟机),可以用 rsync 通过 SSH 同步(类似远程复制,但更智能)。
命令格式(替换成远程服务器的 IP 和用户名):
bash
rsync -av -e ssh source_dir/ 远程用户名@远程IP:目标路径
- 举例:把本地
source_dir
同步到远程服务器(IP192.168.1.101
,用户user
)的/home/user/backup
目录:bash
rsync -av -e ssh source_dir/ user@192.168.1.101:/home/user/backup
- 首次同步会提示 “是否继续连接”,输入
yes
,再输远程服务器密码,即可开始同步(只传变化的部分)。
- 首次同步会提示 “是否继续连接”,输入
二、nginx 日志轮转配置:给 “自己部署的服务” 管理日志
前 14 天学了系统默认日志的轮转,今天针对 “自己部署的 nginx 服务” 配置日志轮转(nginx 会生成access.log
(访问日志)和error.log
(错误日志),不管理会越来越大)。
1. nginx 日志的默认位置
nginx 的日志默认存在/var/log/nginx/
目录:
bash
ls /var/log/nginx/ # 会看到access.log和error.log
2. 实操:给 nginx 日志配置自定义轮转规则
系统默认可能已有 nginx 日志的轮转配置,但我们可以自定义(比如 “每天轮转一次”“保留 10 份旧日志”)。
步骤 1:创建 nginx 日志轮转配置文件
bash
sudo nano /etc/logrotate.d/nginx_custom # 文件名随便起,建议包含nginx
步骤 2:写入轮转规则(复制粘贴,按注释修改)
bash
# 配置nginx的访问日志和错误日志
/var/log/nginx/access.log /var/log/nginx/error.log {
daily # 每天轮转一次(也可以写weekly表示每周)
rotate 10 # 保留10份旧日志,第11份自动删除
compress # 旧日志压缩成.gz(省空间)
delaycompress # 延迟压缩(当前轮转的日志先不压缩,下次轮转再压缩,方便临时查看)
missingok # 日志文件不存在也不报错(避免误删后轮转失败)
notifempty # 日志为空时不轮转
create 0640 www-data adm # 轮转后新建的日志文件:权限0640,所有者www-data(nginx运行用户),所属组adm
sharedscripts # 所有日志轮转完成后,只执行一次postrotate脚本(下面的重启命令)
postrotate # 轮转后需要执行的命令(nginx需要重新打开日志文件)
if [ -f /var/run/nginx.pid ]; then # 如果nginx在运行
kill -USR1 `cat /var/run/nginx.pid` # 发送信号让nginx重新加载日志(不重启服务,平滑切换)
fi
endscript
}
步骤 3:测试轮转规则是否生效
bash
sudo logrotate -f /etc/logrotate.d/nginx_custom # -f强制轮转(测试用)
步骤 4:验证效果
查看/var/log/nginx/
目录:
bash
ls /var/log/nginx/
会看到:
- 原来的
access.log
变成access.log.1
(刚轮转的日志); - 生成新的空
access.log
(nginx 继续写入新日志); - 之前的旧日志(如果有)会被压缩成
access.log.2.gz
等(按配置保留 10 份)。
三、可视化系统监控工具 glances:“一眼看透” 系统状态(比 top 更友好)
之前学的top
、vmstat
都是纯文字界面,数据分散 ——glances
是一个 “可视化监控工具”,用颜色和图表直观显示 CPU、内存、磁盘、网络的实时状态,像 “系统的仪表盘”,小白也能快速看懂 “哪里出了问题”。
1. glances 的优势(用图理解,实际是文字彩色界面)
- 屏幕分区域显示:顶部 CPU,中间内存,底部磁盘和网络;
- 颜色预警:正常是绿色,偏高是黄色,异常是红色(比如 CPU 占用 > 90% 会变红);
- 支持鼠标操作(点击表头可排序),比纯命令更易上手。
2. 实操:安装并使用 glances
步骤 1:安装 glances
bash
sudo apt update
sudo apt install glances # 输入密码后按y安装
步骤 2:启动 glances,看懂界面
bash
glances # 直接输入命令启动
界面关键区域解读(小白只需看这 4 处):
-
CPU 区域(顶部):
- 显示每个核心的占用率(比如 4 核 CPU 会有 4 行);
- 颜色:绿色(<50%)→ 黄色(50%-80%)→ 红色(>80%)。
-
内存区域(CPU 下方):
Mem
:物理内存使用情况(已用 / 总容量);Swap
:交换分区使用情况(类似 Windows 的虚拟内存,红色表示快满了)。
-
磁盘区域(中间偏下):
- 显示磁盘读写速度(
Read
/Write
),红色表示读写频繁(可能卡)。
- 显示磁盘读写速度(
-
网络区域(底部):
- 显示上传(
Tx
)和下载(Rx
)速度,红色表示网络繁忙。
- 显示上传(
常用操作:
- 按
q
退出监控; - 按
m
:按内存占用排序进程; - 按
c
:按 CPU 占用排序进程; - 鼠标点击某列(如
CPU%
):按该列排序。
今日必练实操清单(跟着做,20 分钟搞定)
-
rsync 同步练习:
- 在
source_dir
里新增一个file3.txt
,执行rsync -av source_dir/ target_dir/
,验证只同步了新文件; - 修改
file2.txt
(加一行内容),再次同步,确认只传修改的部分(终端显示 “file2.txt” 被同步)。
- 在
-
nginx 日志轮转:
- 按步骤配置
nginx_custom
轮转规则,执行sudo logrotate -f
后,查看/var/log/nginx/
是否生成access.log.1
。
- 按步骤配置
-
glances 监控:
- 启动
glances
,观察自己的系统:CPU 占用最高的进程是什么?内存用了多少?网络是否有数据传输?按q
退出后,记录下这些信息。
- 启动
今日总结(3 句话记住核心)
- rsync 同步:
rsync -av 源路径 目标路径
→ 智能复制(只传变化的部分),同步文件到服务器 / 备份时必用,比cp
快 10 倍。 - nginx 日志轮转:在
/etc/logrotate.d/
写配置,定义 “轮转周期(daily/weekly)、保留份数、压缩”,最后加postrotate
让 nginx 重新加载日志。 - glances 监控:
glances
→ 可视化看 CPU / 内存 / 磁盘 / 网络,颜色预警(红 = 异常),比top
更直观,排查卡慢问题时先打开它。