首页
Linux常用
docker常用
关于
Search
1
docker安装MDCX
212 阅读
2
麒麟KylinV10离线下载安装包及安装
110 阅读
3
iStoreOS上使用WireGuard
78 阅读
4
UNRAID增加和缩小虚拟机虚拟磁盘大小
50 阅读
5
unraid添加iSCSI 发起程序
39 阅读
默认分类
docker
容器安装
Linux
数据库
群辉
软路由
unRAID
PVE
Nginx
wow
杂项
图床
飞牛
转载微信公众号文章
Docker学习
Linux学习
登录
Search
标签搜索
nginx
unraid
PVE
数据库
dockerfile
同步
wow服务器
装机硬件
宏
v2ray
直通
电视盒子
相册
黑裙7.0.1
远程穿透
定时
ssh
emby
symlink
软链接
奥黛丽·逐爱者
累计撰写
113
篇文章
累计收到
10
条评论
首页
栏目
默认分类
docker
容器安装
Linux
数据库
群辉
软路由
unRAID
PVE
Nginx
wow
杂项
图床
飞牛
转载微信公众号文章
Docker学习
Linux学习
页面
Linux常用
docker常用
关于
搜索到
6
篇与
Linux学习
的结果
2025-08-05
项目实践:使用Rsync和Crontab实现每天凌晨2点将远程服务器文件自动同步到本地服务器进行异地备份
本文将介绍如何通过rsync命令结合crontab定时任务,实现从远程SMB共享目录到本地目录的自动化文件同步。这种方案特别适合需要定期备份远程文件或保持两地文件一致性的场景。1.环境说明远程服务器:SMB共享目录位于/data/myshare/本地服务器:备份目录为/data/mybackup同步时间:每天凌晨2点SSH端口:假设远程服务器使用非标准SSH端口(如2222)2.实现步骤2.1创建同步脚本首先,我们需要创建一个bash脚本来自动执行同步任务。在本地服务器上创建/usr/local/bin/sync_backup.sh文件:#!/bin/bash# 远程服务器信息REMOTE_USER="username" # 替换为实际用户名REMOTE_HOST="remote.example.com" # 替换为实际主机名或IPSSH_PORT="2222" # 替换为实际SSH端口REMOTE_DIR="/data/myshare/" # 远程SMB共享目录LOCAL_DIR="/data/mybackup" # 本地备份目录# Rsync命令rsync -avz -e "ssh -p $SSH_PORT" --delete --progress $REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR $LOCAL_DIR# 记录同步日志echo "[$(date +'%Y-%m-%d %H:%M:%S')] Rsync completed from $REMOTE_HOST:$REMOTE_DIR to $LOCAL_DIR" >> /var/log/rsync_backup.log脚本说明:-avz:归档模式(a),显示详细输出(v),使用压缩传输(z)-e "ssh -p $SSH_PORT":指定非标准SSH端口--delete:删除本地目录中不存在于远程目录的文件--progress:显示传输进度最后一行将同步操作记录到日志文件中2.2设置脚本权限运行以下命令使脚本可执行:sudo chmod +x /usr/local/bin/sync_backup.sh2.3配置SSH免密登录为了避免每次同步都需要输入密码,可以设置SSH密钥认证:ssh-keygen -t rsassh-copy-id -i ~/.ssh/id_rsa.pub -p 2222 username@remote.example.com2.4创建crontab定时任务使用crontab -e命令编辑当前用户的crontab:0 2 * * * /usr/local/bin/sync_backup.sh这表示每天凌晨2点执行同步脚本。2.5验证配置可以手动运行脚本测试是否正常工作:/usr/local/bin/sync_backup.sh检查/var/log/rsync_backup.log查看同步结果。3.高级配置选项带宽限制:如果同步过程占用过多带宽,可以添加--bwlimit=KBPS参数限制传输速率。排除特定文件:使用--exclude参数排除不需要同步的文件或目录。邮件通知:可以在脚本中添加邮件发送功能,通知同步结果。错误处理:增强脚本的错误处理能力。修正后的脚本如下:#!/bin/bash# 远程服务器信息REMOTE_USER="username" # 替换为实际用户名REMOTE_HOST="remote.example.com" # 替换为实际主机名或IPSSH_PORT="2222" # 替换为实际SSH端口REMOTE_DIR="/data/myshare/" # 远程SMB共享目录LOCAL_DIR="/data/mybackup" # 本地备份目录# 执行rsync并捕获退出状态rsync -avz -e "ssh -p $SSH_PORT" --delete --progress $REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR $LOCAL_DIR# 检查rsync执行结果if [ $? -eq 0 ]; then echo "[$(date +'%Y-%m-%d %H:%M:%S')] Rsync completed successfully" >> /var/log/rsync_backup.logelse echo "[$(date +'%Y-%m-%d %H:%M:%S')] Rsync failed with error code $?" >> /var/log/rsync_backup.log # 可以在这里添加发送错误通知的代码fi4.总结通过结合rsync和crontab,我们建立了一个可靠、自动化的文件同步系统。这种方案具有以下优点:自动化运行:无需人工干预,定时自动执行高效同步:rsync只传输变化的文件部分,节省带宽和时间灵活性:支持非标准SSH端口和各种同步选项可追溯性:日志记录每次同步操作此方案适用于各种文件备份和同步场景,特别是需要定期将远程文件同步到本地的备份需求。
2025年08月05日
10 阅读
0 评论
0 点赞
2025-07-24
Linux指南(十三):磁盘
磁盘是什么01磁盘是计算机中用于长期存储数据的硬件设备,属于外存的一种,其存储的数据在断电后不会丢失。常见的磁盘类型包括机械硬盘(HDD,通过磁头读写磁性盘片存储数据)、固态硬盘(SSD,基于闪存芯片存储数据,速度更快)、U盘、移动硬盘等。在Linux系统中,磁盘被抽象为设备文件(如/dev/sda、/dev/nvme0n1),系统通过这些文件与磁盘交互,实现数据的读写和管理。磁盘常见操作02磁盘操作围绕“让磁盘可被系统使用”和“管理存储资源”展开,核心流程包括:识别磁盘:确认系统中存在的磁盘设备,了解其容量、类型等信息。分区:将物理磁盘划分为多个独立的逻辑区域(分区),便于数据分类管理(如区分系统文件和用户数据),避免数据混乱。格式化:对分区进行处理,使其支持特定的文件系统(如ext4、XFS),文件系统是管理文件存储结构的规则,决定了数据如何组织和访问。挂载:将格式化后的分区关联到Linux目录树的某个目录(挂载点),使系统能通过该目录访问分区内的文件。查看与维护:监控磁盘使用情况(如剩余空间、文件占用),检查并修复磁盘错误,确保存储稳定。磁盘常见命令03识别磁盘设备:lsblk:列出系统中所有磁盘及分区的信息,包括设备名称、大小、挂载点等,直观展示磁盘与分区的关系。fdisk -l:显示磁盘的详细信息,包括磁盘大小、分区表类型(MBR/GPT)、分区数量及每个分区的大小、类型等。分区操作:fdisk [设备名]:用于MBR分区表的磁盘分区(支持容量较小的磁盘),可创建、删除、调整分区,需进入交互模式操作(如fdisk /dev/sda)。parted [设备名]:支持GPT分区表(适用于大容量磁盘),可处理超过2TB的磁盘,支持分区大小动态调整(如parted /dev/sdb)。格式化分区:mkfs.xxx [分区名]:将分区格式化为指定文件系统,xxx为文件系统类型,如mkfs.ext4 /dev/sda1(格式化为ext4)、mkfs.xfs /dev/sdb1(格式化为XFS)。挂载与卸载:mount [分区名] [挂载点]:将分区挂载到指定目录,如mount /dev/sda1 /mnt/data。umount [挂载点/分区名]:卸载已挂载的分区,如umount /mnt/data或umount /dev/sda1。mount -a:根据/etc/fstab文件中的配置,自动挂载所有未挂载的分区(常用于系统启动时自动挂载)。查看磁盘使用情况:df -h:以人类可读的单位(如GB、MB)显示所有挂载点的磁盘空间使用情况,包括总容量、已用、可用空间及使用率。du -sh [目录/文件]:查看指定目录或文件的磁盘占用大小,-s表示汇总结果,-h为人类可读单位(如du -sh /home)。磁盘检查与修复:fsck [分区名]:检查并修复文件系统错误,需在分区未挂载时使用,如fsck.ext4 /dev/sda1(针对ext4文件系统)。badblocks [分区名]:检测分区中的坏块(无法正常存储数据的区域),如badblocks -v /dev/sda1(-v显示详细过程)。推荐:宝藏网站推荐:一个系统学习编程的网站Linux指南(一):Linux内核与Linux系统Linux指南(二):Linux命令行与图形用户界面Linux指南(七):目录介绍、目录的特性与功能、常见目录Linux指南(九):用户目录、主目录Linux指南(十):文件、一切皆文件Linux命令(四):系统管理命令介绍
2025年07月24日
2 阅读
0 评论
0 点赞
2025-07-24
Linux指南(十五):磁盘挂载与卸载
在Linux系统中,磁盘的挂载(Mount)与卸载(Umount)是管理存储设备的核心操作。挂载是将物理或虚拟磁盘(如硬盘分区、U盘、光盘等)与文件系统中的某个目录(挂载点)关联起来,使系统能够访问其中的内容;卸载则是解除这种关联,确保数据安全。挂载的基本概念01挂载点:Linux中所有存储设备都需挂载到一个目录下才能被访问,这个目录称为挂载点(通常是空目录)。例如,U盘可挂载到/mnt/usb,光盘可挂载到/media/cdrom。设备标识:存储设备在Linux中以文件形式存在于/dev目录下,常见标识如下:硬盘分区:如/dev/sda1(第一块SATA硬盘的第一个分区)、/dev/nvme0n1p1(NVMe硬盘的第一个分区)。U盘/移动硬盘:通常为/dev/sdb1、/dev/sdc1等(依插入顺序递增)。光盘:/dev/cdrom或/dev/sr0。挂载操作021. 基本语法mount [选项] 设备路径 挂载点目录2. 常用选项-t filesystem:指定文件系统类型(如ext4、xfs、ntfs、vfat等),通常可省略(系统会自动检测)。-o 选项:指定挂载参数,常见参数:ro:只读挂载(防止误修改)。rw:读写挂载(默认)。remount:重新挂载(用于修改已挂载设备的参数,如从只读改为读写)。uid=xxx/gid=xxx:挂载FAT32/NTFS等Windows文件系统时,指定用户/组权限(避免权限问题)。3. 示例挂载U盘(/dev/sdb1)到/mnt/usb(需先创建目录):先执行mkdir -p /mnt/usb创建挂载点,再执行mount /dev/sdb1 /mnt/usb(系统会自动检测文件系统)。挂载NTFS格式的移动硬盘(支持读写):需先安装ntfs-3g工具(如Ubuntu执行sudo apt install ntfs-3g),再执行mount -t ntfs-3g /dev/sdc1 /mnt/ntfs。重新挂载根目录为读写(救援模式下常用):执行mount -o remount,rw /。查看已挂载设备03使用以下命令查看系统中所有已挂载的设备及信息:mount:显示所有挂载信息(包含临时文件系统)。df -h:以人类可读的方式显示已挂载设备的空间使用情况。lsblk:列出所有块设备及其挂载点(直观展示磁盘分区结构)。卸载挂载04卸载的目的是确保数据写入完成,避免直接拔插导致数据丢失。1. 基本语法umount 设备路径 # 或 umount 挂载点目录2. 示例卸载/dev/sdb1(通过设备路径):执行umount /dev/sdb1。卸载/mnt/usb(通过挂载点):执行umount /mnt/usb。3. 常见问题:设备忙(device is busy)若卸载时提示“设备忙”,说明有程序正在访问该设备,解决方法:关闭所有访问该挂载点的程序或终端。使用fuser或lsof查找占用进程并终止:先执行fuser -m /mnt/usb查看占用/mnt/usb的进程ID,再执行kill -9 进程ID终止进程后再卸载。永久挂载05临时挂载在系统重启后会失效,若需永久挂载,需配置/etc/fstab文件(谨慎操作,错误配置可能导致系统无法启动)。1. /etc/fstab格式每行对应一个挂载配置,格式为:设备路径 挂载点 文件系统类型 挂载参数 备份标识(0=不备份) 自检顺序(0=不自检)2. 示例永久挂载/dev/sda5(ext4格式)到/data:执行echo "/dev/sda5 /data ext4 defaults 0 2" >> /etc/fstab。defaults:包含rw、suid、dev、exec、auto、nouser、async等默认参数。永久挂载NTFS移动硬盘(UUID方式,更稳定,设备标识可能随插入顺序变化):uid=1000/gid=1000:指定当前用户(通常UID=1000)拥有权限。先查询设备UUID:执行blkid /dev/sdc1(输出类似:/dev/sdc1: UUID="1234-ABCD" TYPE="ntfs")。添加到/etc/fstab:执行echo "UUID=1234-ABCD /mnt/ntfs ntfs-3g defaults,uid=1000,gid=1000 0 0" >> /etc/fstab。3. 验证配置添加后执行mount -a检查是否有错误(加载/etc/fstab中所有未挂载的设备,无报错则配置正确),避免重启后故障。推荐:Linux指南(一):Linux内核与Linux系统Linux指南(二):Linux命令行与图形用户界面Linux指南(七):目录介绍、目录的特性与功能、常见目录Linux指南(九):用户目录、主目录Linux指南(十):文件、一切皆文件Linux指南(十三):磁盘Linux命令(四):系统管理命令介绍
2025年07月24日
14 阅读
0 评论
0 点赞
2025-07-24
Rsync(远程同步):Linux 最常用的文件复制与同步工具
Rsync(远程同步)是Linux/Unix系统中用于远程和本地复制及同步文件和目录的最常用命令。借助 rsync 命令,可以跨目录、磁盘和网络远程和本地复制及同步数据,执行数据备份,并在两台 Linux 机器之间进行镜像同步。本文将详细讲解 rsync 命令的部分基本和高级用法,帮助您在基于 Linux 的机器上远程和本地传输文件。归档模式 | 增量传输 | SSH 加密 | 带宽控制📢 无需 root 权限 | 本地/远程通用 | 保留文件属性# 基础格式(归档+压缩+进度显示)rsync -avzP 源路径 目标路径常用选项:选项作用-v显示详细传输过程-r递归复制目录(不保留元数据)-a归档模式(保留所有文件属性)-z传输时压缩数据-h人性化显示数字大小-P显示实时进度条🚀 核心优势对比表特性Rsync传统 SCP传输效率✅ 增量同步(仅传差异部分)❌ 全文件传输带宽控制✅ --bwlimit 限速❌ 不支持属性保留✅ 权限/时间戳/所有者❌ 部分丢失断点续传✅ -P 选项自动续传❌ 重新传输安全传输✅ SSH 隧道加密✅ SSH 加密📦 基础操作篇1. 本地文件同步要本地复制或同步文件,可以使用以下命令,该命令将从本地机器的一个位置同步单个文件到另一个位置。rsync -zvh Python-3.13.4.tgz /tmp/backups/# 将 Python-3.13.4.tgz 同步到 /tmp/backups2. 本地目录同步(保留属性)以下命令将从一台机器上的一个目录将所有文件传输或同步到同一台机器上的另一个目录。rsync -avzh music/ oneh@192.168.2.100:/home/oneh/# 递归同步整个目录(保留属性)3. 远程 → 本地目录同步rsync -azvh oneh@192.168.2.100:/home/oneh/ /tmp/music🌐 远程操作篇4. 本地 → 远程目录(SSH 加密)使用 rsync,可以借助 SSH进行数据传输。通过 SSH 协议,可以确保数据在加密的连接中传输,从而防止任何人在数据通过互联网传输过程中窃取数据。要通过 SSH 使用 rsync,您可以使用 -e 选项指定远程 shell 命令,通常为 ssh,如下所示。rsync -avzhe ssh music/ oneh@192.168.2.100:/home/oneh/backup_music5. 远程文件 → 本地(带进度条)远程到本地,使用 --progress 显示传输进度条.rsync -avzhe ssh --progress oneh@192.168.2.100:/home/oneh/backup_music /home/oneh/backup_music6. SSH 密钥免密同步(安全推荐)# 先配置密钥:ssh-keygen + ssh-copy-idrsync -avzhe ssh /source user@IP:/dest ⚙️ 高级技巧篇7. 智能文件过滤# 包含 .c 排除 .h:rsync -avz --include='*.c' --exclude='*.h' /home/oneh/Python-3.13.4/Python/ oneh@192.168.2.100:/home/oneh/Python8. 目标端清理源端已删除文件如果源位置不存在某个文件或目录,但目标位置已经存在该文件/目录,希望在同步过程中删除目标位置的该现有文件/目录。rsync -avz --delete /home/oneh/music/ oneh@192.168.2.100:/home/oneh/backup_music/9. 传输后自动删除源文件假设你有一个主网页服务器和一个数据备份服务器,你创建了每日备份并将其与备份服务器同步,但现在你不想在网页服务器上保留该备份的本地副本。rsync --remove-source-files -avzh data.log oneh@192.168.2.100:/home/oneh/backup/10. 空运行测试(安全防护)如果您是 rsync 的新手,且不确定自己的命令会产生什么具体效果,那么 rsync 可能会对目标文件夹中的内容造成混乱,而要撤销这些操作可能会非常繁琐。使用此选项不会对文件进行任何修改,并显示命令的输出结果。如果输出结果与您期望的完全一致,则可以从命令中移除‘--dry-run’选项,并在终端中运行。rsync --dry-run -avz hello.py oneh@192.168.2.100:/home/oneh/🛡️ 企业级场景方案11. 带宽限速(避免网络阻塞)使用--bwlimit选项从一台机器向另一台机器传输数据时,可以设置带宽限制。此选项可帮助我们限制I/O带宽。rsync --bwlimit=5000 -avzh Python-3.13.4.tgz oneh@192.168.2.100:/home/oneh/ 12. 故障恢复传输rsync -avzP --partial /中断文件 目标路径📊 参数速查表参数作用示例-a归档模式(全属性保留)rsync -a src/ dest/-z传输时压缩rsync -z data.log remote:--max-size限制文件大小--max-size='100M'-W禁用增量传输(全文件)rsync -W image.iso dest/--stats显示传输统计rsync -a --stats src/ dest/💎 结语与进阶建议灾难防护:重要操作前必加 --dry-run性能调优:大文件传输用 -W + --bwlimit 组合自动化:搭配 cron 实现定时备份深度学习:man rsync 查看 50+ 高级参数✨ 下一步实践:# 生成测试环境mkdir -p test/{src,dest} && touch test/src/file{1..100}.txt# 体验实时同步:watch -n 1 "rsync -avz test/src/ test/dest/ | grep 'sent'"推荐阅读:👉 1.在 Linux 系统上绝对不能执行的 10 条命令-很危险的👉 2.基本的Linux命令,【tail】 命令常用的实用示例,告别海量日志,精准抓取关键信息👉 3.章节2:基本的Linux命令,【echo】 命令常用的实用示例,Linux终端输出的瑞士军刀!
2025年07月24日
24 阅读
0 评论
0 点赞
2025-07-10
30个最重要的Linux配置文件路径及功能详解
Linux 以其强大的灵活性和可定制性著称,而这一特性很大程度上得益于其丰富的配置文件体系。这些文件如同系统的"控制面板",允许管理员精准调整各项功能——从基础环境变量设置到关键安全认证,从软件源管理到日志系统配置。熟悉并掌握这些配置文件都将显著提升系统管理能力。下面以表格的形式整理并列出这30个关键配置文件:文件功能说明/etc/fstab该文件用于控制在引导时和系统正常运行期间挂载文件系统的方式。它列出了所有可用的文件系统及其挂载点,包括选项和转储频率。/etc/passwd该文件包含有关系统上用户的信息,包括其用户名、用户ID、组ID、主目录和shell。系统上的所有用户都可以读取此文件,但请务必确保其安全,以防止对用户帐户进行未经授权的访问。/etc/shadow该文件包含系统上每个用户的加密密码和其他安全信息。与/etc/passwd不同,此文件只能由 root 用户读取,因此安全性要高得多。它用于存储上次密码更改、最短密码期限和最长密码期限等信息。/etc/group记录系统用户组信息(组名、GID及成员列表),用于管理文件和目录的访问权限。/etc/sudoers配置sudo命令权限,指定允许使用sudo的用户/组及可执行命令。需严格保护以防止提权攻击。/etc/ssh/sshd_configSSH服务端配置文件,设置监听端口、认证方式、主机密钥路径等,用于保障远程访问安全。/etc/resolv.conf配置DNS解析器,指定域名服务器地址、搜索域和选项,是网络通信的关键文件。/etc/network/interfaces定义网络接口配置(IP地址、子网掩码、网关等),支持DHCP和静态IP设置。/etc/hosts该文件用于将主机名映射到 IP 地址。它是一个简单的文本文件,可用于指定自定义主机名和 IP 地址,无需使用 DNS 服务器。此文件用于在 Linux 系统上执行本地名称解析。/etc/sysctl.conf该文件用于在运行时配置 Linux 内核参数。它包含一个键值对列表,可用于修改内核的行为,例如启用或禁用 IPv4 转发、调整打开的文件描述符的最大数量以及设置共享内存段的最大数量。/etc/services该文件列出了已知服务及其使用的端口号和协议。系统使用它来将服务名称映射到端口号和协议,使用户更容易配置网络服务。此文件用于管理 Linux 系统上的网络服务。/etc/aliases管理邮件别名,实现多地址收件或邮件转发功能。/etc/crontab系统级定时任务配置文件,由cron守护进程自动执行预设命令。/etc/rc.local该文件是 init 进程在引导时运行的脚本。它包含应在系统完成引导后执行的命令和脚本,例如启动服务或设置环境变量。此文件用于自定义 Linux 系统在引导期间的行为。/etc/default/locale该文件用于在 Linux 系统上配置系统区域设置。它包含有关默认区域设置的信息,例如语言、国家/地区和字符编码,这些信息应该用于系统范围的设置。/etc/environment定义全局环境变量,供应用程序和脚本调用。/etc/default/keyboard配置键盘布局(型号、变体、选项等),影响系统全局输入设置。/etc/security/limits.conf限制系统资源使用(如打开文件数、虚拟内存大小、进程数上限)。/etc/apt/sources.listAPT包管理器的软件源列表,指定软件仓库地址。/etc/apt/apt.conf配置APT包管理器选项(代理服务器、默认版本、升级策略等)。/etc/bashrc系统级bash shell配置文件,对所有用户生效。/etc/sysconfig/network设置主机名、网关等网络参数(部分Linux发行版专用)。/etc/modprobe.d/blacklist.conf禁用指定内核模块加载,避免冲突或冗余驱动。/etc/udev/rules.d/70-persistent-net.rules永久绑定网卡MAC地址与接口名(如eth0)。/etc/default/grub配置GRUB引导加载器(默认内核、超时时间、分辨率等)。/etc/X11/xorg.confX Window系统配置文件,定义显卡、显示器、键盘等硬件参数。/etc/ld.so.conf指定动态链接库的搜索路径。/etc/pam.d/system-auth管理系统认证机制(密码验证、智能卡等)。/etc/logrotate.conf配置日志轮转规则(周期、大小、压缩等)。/etc/rsyslog.conf定义rsyslog守护进程的日志存储路径、过滤规则和格式。Linux 配置文件在确保系统稳定、安全运行方面发挥着至关重要的作用。无论是管理环境变量、调整内核参数,还是配置 X Window 系统,这些文件都能让我们深度玩转 Linux,并使其完美适配应用场景的需求。后续对部分重要文件分节单独说明。附表:《30个最重要的Linux配置文件详解》
2025年07月10日
2 阅读
0 评论
0 点赞
1
2