首页
Linux常用
docker常用
关于
Search
1
docker安装MDCX
258 阅读
2
麒麟KylinV10离线下载安装包及安装
200 阅读
3
iStoreOS上使用WireGuard
166 阅读
4
麒麟v10系统openssh升级OpenSSH_10.0p2-OpenSSL 3.4.2
62 阅读
5
UNRAID增加和缩小虚拟机虚拟磁盘大小
54 阅读
默认分类
docker
容器安装
Linux
数据库
群辉
软路由
unRAID
PVE
Nginx
Tomcat
wow
杂项
图床
飞牛
转载微信公众号文章
Docker学习
Linux学习
登录
Search
标签搜索
nginx
数据库
unraid
PVE
麒麟
dockerfile
同步
wow服务器
装机硬件
宏
v2ray
直通
电视盒子
相册
黑裙7.0.1
远程穿透
定时
ssh
emby
symlink
奥黛丽·逐爱者
累计撰写
128
篇文章
累计收到
21
条评论
首页
栏目
默认分类
docker
容器安装
Linux
数据库
群辉
软路由
unRAID
PVE
Nginx
Tomcat
wow
杂项
图床
飞牛
转载微信公众号文章
Docker学习
Linux学习
页面
Linux常用
docker常用
关于
搜索到
128
篇与
奥黛丽·逐爱者
的结果
2025-08-06
麒麟KylinV10离线下载安装包及安装
{collapse}{collapse-item label="离线包获取和安装" open}1、应用场景服务器处于内网,需要离线安装。2、下载安装包环境先在能上网的系统上下载离线安装包。3、yum是否支持只下载不安装yum 是否支持 --downloadonly(该参数不会安装软件,只会下载软件) --downloaddir(用于指定软件包下载后存储路径)执行yum帮助命令:yum --help如果列表中出现 --downloadonly --downloaddir 参数则表示目前yum已支持只下载不安装。没有出现则还需安装一个插件yum-plugin-downloadonly安装命令如下:yum install -y yum-plugin-downloadonly4、yum离线下载vsftpd安装包命令yum install -y --downloadonly --downloaddir=. vsftpd yum 最重要的两个参数--downloadonly 该参数不会安装软件,只会下载软件。 --downloaddir 用于指定软件包下载后存储路径。5、离线安装vsftpd服务器命令一种方式: 执行命令:yum localinstall vsftpd-3.0.3-32.ky10.x86_64.rpm另一种方式:执行命令:rpm -ivh vsftpd-3.0.3-32.ky10.x86_64.rpm下载好后的软件包,使用yum localinstall即可以离线安装。注意事项:yum localinstall 后面要指定安装所需的全部rpm包[root@KylinV10 vsftpd]# yum localinstall vsftpd-3.0.3-32.ky10.x86_64.rpm vsftpd-help-3.0.3-32.ky10.x86_64.rpm除了yum localinstall命令以外,还可以使用rpm -ivh命令安装rpm包。6、验证初步安装vsftpd服务器成果①查看vsftpd服务器状态命令:systemctl status vsftpd②启动vsftpd命令:systemctl start vsftpd③查看vsftpd服务器状态命令:systemctl status vsftpd原文链接:https://blog.csdn.net/huxiaochao_6053/article/details/103661720{/collapse-item}{collapse-item label="详细配置"}配置开机启动(1)查看vsftp服务状态# 查看状态 service vsftpd status #开启 service vsftpd start #停止 service vsftpd stop #重启 service vsftpd restart(2)设置开机启动# 查看是否开机启动: systemctl is-enabled vsftpd.service # 设置开机自启动: systemctl enable vsftpd.service # 查看开机启动服务列表: systemctl list-unit-files|grep enabled # 查看启动失败的服务列表: systemctl --failed防火墙设置方式一:关闭防火墙# 1.查看防火墙状态 systemctl status firewalld.service # 2.关闭防火墙 systemctl stop firewalld.service方式二:防火墙开放端口# 暂时开放 firewall-cmd --add-service=ftp # 永久开放 firewall-cmd --add-service=ftp --permanent # 使配置生效 firewall-cmd --reload # 查看服务 firewall-cmd --list-servicevsftp.conf配置查看原始配置:cat /etc/vsftpd/vsftpd.conf |grep -v ^## vsftp.conf原始配置 anonymous_enable=YES local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES listen=NO listen_ipv6=YES pam_service_name=vsftpd userlist_enable=YES tcp_wrappers=YES# 1.配置前先备份: mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.backup # 2.编辑内容 vi /etc/vsftpd/vsftpd.confvsftpd.conf内容(此内容仅支持本地用户)如下:#设置为NO代表不允许匿名 anonymous_enable=NO #设定本地用户可以访问 local_enable=YES #可以进行写的操作 write_enable=YES #设定上传文件的权限掩码 local_umask=022 #设定上传文件的权限掩码 dirmessage_enable=YES #设定端口20进行数据连接 connect_from_port_20=YES listen=YES listen_ipv6=NO #设定pam服务下的vsftpd验证配置文件名,文件默认地址再/etc/pam.d/vsftpd pam_service_name=vsftpd userlist_enable=NO userlist_deny=NO tcp_wrappers=YES #设定开启日志记录功能 xferlog_enable=YES #设定vsftpd服务日志保存路劲 xferlog_file=/var/log/xferlog #设定日志使用标准的记录格式 xferlog_std_format=YES配置vsftpd文件# 1.备份vsftpd文件: cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.backup # 2.编辑vsftpd文件: vi /etc/pam.d/vsftpd # 3.修改内容: pam_shells.so改为pam_nologin.so # 4.重启服务 systemctl restart vsftpd.service创建本地用户# 1.创建不需要登录的本地用户 useradd -m -s /sbin/nologin ftp1 # 2.给新建用户设置密码 passwd ftp1 # 3.查询用户 getent passwd # 4.删除用户 userdel -r user配置 SFTP 限制(可选)编辑 /etc/ssh/sshd_config,添加以下内容以限制用户仅能使用 SFTP:Match User ftp1 ForceCommand internal-sftp ChrootDirectory /home/ftp1 PermitTunnel no AllowAgentForwarding no AllowTcpForwarding no X11Forwarding no然后重启 SSH 服务:sudo systemctl restart sshd设置目录权限(如果启用了 ChrootDirectory):sudo chown root:root /home/ftp1 # Chroot 目录必须属于 root sudo chmod 755 /home/ftp1 # 确保权限正确 sudo mkdir /home/ftp1/upload # 用户可上传的子目录 sudo chown ftp1:ftp1 /home/ftp1/upload权限错误的补充[root@KylinV10 vsftpd]# chown root:root /home/ftp1 [root@KylinV10 vsftpd]# chmod 755 /home/ftp1 [root@KylinV10 vsftpd]# chown ftp1:ftp1 /home/ftp1/upload [root@KylinV10 vsftpd]# chmod 755 /home/ftp1/upload [root@KylinV10 vsftpd]# sftp ftp1@192.168.0.204 The authenticity of host '192.168.0.204 (192.168.0.204)' can't be established. ED25519 key fingerprint is SHA256:wFf1hZrzgheDFXybazHzXFCbniJCZcOvgMmrVOfrZT0. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added '192.168.0.204' (ED25519) to the list of known hosts. Authorized users only. All activities may be monitored and reported. ftp1@192.168.0.204's password: Connected to 192.168.0.204. sftp> cd upload/ sftp> mkdir test123 sftp> ls test123 sftp> bye [root@KylinV10 vsftpd]#登录验证# 1.需要先安装ftp插件,检查 [root@localhost vsftpd]# ftp 192.168.17.88 -bash: ftp: command not found # 2.安装ftp客户端 yum install ftp -y # 3.登录 [root@CDH103 ~]# ftp 192.168.17.60 Connected to 192.168.17.60 (192.168.17.60). 220 (vsFTPd 3.0.2) Name (192.168.17.60:root): ftp1 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> ? # 4.ftp命令输入?可以查看命令;常用命令如下: cd #切换目录 ls #查看列表 pwd #查看当前目录 get file #下载文件 put file #上传文件 mkdir file #创建文件或目录 rename file newfile #修改文件名 delete file #删除文件 quit #退出 bye #退出测试 SSH 登录(应被拒绝):根据测试结果,SFTP 用户 ftp1 的配置已经生效:SSH 登录被拒绝(显示 This service allows sftp connections only)仅允许 SFTP 连接这说明配置是正确的,用户 ftp1 只能通过 SFTP 传输文件,而无法通过 SSH 登录服务器。{/collapse-item}{/collapse}
2025年08月06日
200 阅读
2 评论
0 点赞
2025-08-06
编写 Dockerfile:从入门到精通
引言Dockerfile 是容器化技术的核心组成部分,它能让开发者和 DevOps 工程师将应用程序及其所有依赖项打包成轻量级、可移植的容器。本指南将全面讲解 Dockerfile,从基础概念到高级技巧,最终使您掌握编写高效、安全且适合生产环境的 Dockerfile 所需的技能。1. 什么是 Dockerfile?Dockerfile 是一个纯文本文件,包含一系列用于构建 Docker 镜像的指令。Dockerfile 中的每一行都代表镜像构建过程中的一个步骤。创建的镜像是一个轻量级、可移植且自给自足的环境,包含运行应用程序所需的一切,包括库、依赖项和应用程序代码本身。Dockerfile 的关键组件:基础镜像: 你的 Docker 镜像构建起点。例如,如果你正在构建一个 Python 应用程序,可能会选择 python:3.9 作为基础镜像。应用程序代码与依赖项: 将代码添加到镜像中,并安装依赖项以确保应用程序能正确运行。命令与配置项: 执行命令、设置环境变量以及暴露端口的相关指令。为什么 Dockerfile 很重要?一个 Dockerfile:标准化应用程序的构建和部署方式。确保在不同环境(开发、测试、生产)中的一致性。使应用程序具有可移植性且更易于管理。2. 为什么要学习 Dockerfile?Dockerfile 是容器化的基础,也是 DevOps 工程师的关键技能。以下是学习 Dockerfile 的必要性:1. 跨环境可移植性通过 Dockerfile,您可以一次构建镜像,随处运行。这解决了"在我机器上能运行"的难题。2. 简化的 CI/CD 管道在 Jenkins、GitHub Actions 或 Azure DevOps 等 CI/CD 管道中使用 Dockerfile,实现应用程序构建、测试和部署的自动化。3. 基础设施版本控制如同代码一样,Dockerfile 也可以进行版本控制。基础设施的变更可以被追踪,必要时还能回滚。4. 增强的协作能力团队可以共享 Dockerfile 来确保所有人都在相同的环境中工作。这简化了新开发者或贡献者的上手流程。5. 资源效率与传统虚拟机相比,通过优化 Dockerfile 创建的 Docker 镜像更加轻量化,资源消耗更低。示例:假设一个运行在 Node.js 上的 web 应用。使用 Dockerfile 可以将应用与其所需的 Node.js 特定版本打包在一起,无需开发者在本地安装 Node.js,从而确保所有环境的一致性。3. Dockerfile 基础掌握 Dockerfile 的基础知识对于编写高效实用的文件至关重要。让我们一起来探索这些基础要素。3.1 Dockerfile 语法Dockerfile 包含简单的指令,其中每个指令执行特定的操作。其语法通常为:INSTRUCTION arguments例如:FROM ubuntu:20.04COPY . /appRUN apt-get update && apt-get install -y python3CMD ["python3", "/app/app.py"]关键要点:像 FROM、COPY、RUN 和 CMD 这样的指令是区分大小写的,必须用大写字母书写。每条指令都会在 Docker 镜像中创建一个新的层 。3.2 常用指令让我们分解一些最常用的指令:FROM FROM python:3.9指定构建的基础镜像。示例:Dockerfile 必须从 FROM 指令开始,多阶段构建除外。COPY COPY requirements.txt /app/将文件或目录从主机系统复制到容器中。示例:RUN RUN apt-get update && apt-get install -y curl在构建过程中执行命令。常用于安装软件包。示例:CMD CMD ["python3", "app.py"]指定容器启动时运行的默认命令。示例:WORKDIR WORKDIR /usr/src/app设置容器内部的工作目录。示例:EXPOSE EXPOSE 8080记录容器监听的端口。示例:4. 中级 Dockerfile 概念掌握基础知识后,就可以开始使用 Dockerfile 的高级功能来优化和增强构建过程。4.1 构建多阶段 Dockerfile多阶段构建允许您通过分离构建和运行时环境来创建精简的生产镜像。阶段 1(构建器): 安装依赖项、编译代码并构建应用程序。阶段 2(生产环境): 仅从构建阶段复制必要的文件。示例:# Stage 1: Build the applicationFROM node:16 AS builderWORKDIR /appCOPY package.json .RUN npm installCOPY . .RUN npm run build# Stage 2: Run the applicationFROM nginx:alpineCOPY --from=builder /app/build /usr/share/nginx/htmlEXPOSE 80CMD ["nginx", "-g", "daemon off;"]优势:更小的生产环境镜像。将构建工具排除在运行时环境之外,提升安全性。4.2 使用环境变量环境变量使 Dockerfile 更具灵活性和可复用性。示例:ENV APP_ENV=productionCMD ["node", "server.js", "--env", "$APP_ENV"]使用 ENV 来定义变量。使用 docker run -e 在运行时覆盖变量: docker run -e APP_ENV=development myapp4.3 添加健康检查HEALTHCHECK 指令定义了检查容器健康状态的命令。示例:HEALTHCHECK --interval=30s --timeout=10s --retries=3 CMD curl -f http://localhost:8080/health || exit 1作用: 确保容器内的应用程序按预期运行。自动重启: 如果健康检查失败,Docker 可以重启容器。5. Dockerfile 高级技巧高级技巧可以帮助你创建经过优化、安全且可用于生产环境的镜像。5.1 优化镜像大小使用更小体积的基础镜像 FROM python:3.9-alpine用最小化镜像替代默认镜像,例如 alpine最小化层数 RUN apt-get update && apt-get install -y curl && apt-get clean合并命令以减少层数:5.2 使用构建参数构建参数(ARG)允许在构建期间动态配置镜像。示例:ARG APP_VERSION=1.0RUN echo "Building version $APP_VERSION"在构建时传递值:docker build --build-arg APP_VERSION=2.0 .5.3 实施安全最佳实践避免使用 root 用户: 创建并使用非 root 用户以增强安全性。 RUN adduser --disabled-password appuser USER appuser使用可信的基础镜像: 坚持使用官方或经过验证的镜像,以降低漏洞风险。 FROM nginx:stable扫描镜像漏洞: 使用 Trivy 或 Snyk 等工具扫描镜像: trivy image myimage6. Dockerfile 调试与故障排除在使用 Dockerfile 时,镜像构建或运行时遇到错误是很常见的情况。掌握有效的调试和故障排除技巧可以节省时间并快速定位问题。调试 Dockerfile 的步骤增量构建镜像 docker build --target builder -t debug-image .使用 --target 标志来构建多阶段 Dockerfile 中的特定阶段。这可以帮助你隔离构建过程中不同阶段出现的问题。检查中间层 docker history <image_id>使用 docker history 查看镜像层并识别不必要的命令或问题:使用 RUN 进行调试 RUN echo "File exists:" && ls /path/to/file在 RUN 指令中添加调试命令。例如,添加 echo 语句可以帮助验证文件路径或配置:日志文件 docker logs <container_id>容器内运行的服务产生的日志文件或输出可以帮助发现运行时错误。使用 docker logs 命令:检查构建上下文确保不会将不必要的文件发送到构建上下文,这可能导致构建时间增加并引发意外问题。使用 .dockerignore 文件来过滤文件。常见错误及修复方法错误:文件未找到原因: 使用 COPY 或 ADD 命令复制的文件在指定路径中不存在。解决方法: 检查文件路径并使用 WORKDIR 设置正确的目录。错误:依赖项未安装原因: 缺少依赖项或安装命令不正确。解决方法: 安装软件前使用 RUN 更新包列表(apt-get update)。权限错误原因: 以错误的用户身份运行进程或访问文件。解决方案: 使用 USER 指令切换到非 root 用户。7. 编写 Dockerfile 的最佳实践要创建简洁、高效且安全的 Dockerfile,请遵循这些行业公认的最佳实践:1. 固定镜像版本避免使用 latest 标签作为基础镜像,因为当新版本发布时可能导致环境不一致问题。 FROM python:3.9-alpine2. 优化分层合并指令以减少层数。每个 RUN 指令都会创建新层,最小化层数有助于优化镜像体积。 RUN apt-get update && apt-get install -y curl && apt-get clean3. 使用 .dockerignore 文件通过创建 .dockerignore 文件来防止不必要的文件(例如 .git、日志或大型数据集)被包含在构建上下文中: node_modules *.log .git4. 保持镜像轻量使用最小化的基础镜像(如 alpine 或特定语言的 slim 版本)来减小镜像体积。 FROM node:16-alpine5. 添加元数据使用 LABEL 指令为镜像添加元数据,例如版本、作者和描述: LABEL maintainer="yourname@example.com" LABEL version="1.0"6. 使用非 root 用户以 root 身份运行容器存在安全风险。应创建并切换至非 root 用户: RUN adduser --disabled-password appuser USER appuser7. 清理临时文件安装完成后移除临时文件以减少镜像大小: RUN apt-get install -y curl && rm -rf /var/lib/apt/lists/*8. 常见错误避免如果编写不当,Dockerfile 会很快变得低效且不安全。以下是一些常见错误及规避方法:1. 使用大型基础镜像问题: 使用大型基础镜像会增加构建时间和磁盘占用。解决方案: 使用轻量级基础镜像,例如 alpine 或语言镜像的精简版。 FROM python:3.9-alpine2. 未能利用多阶段构建问题: 在最终镜像中包含构建工具会不必要的增加镜像体积。解决方案: 使用多阶段构建,仅将必要文件复制到生产镜像中。 FROM golang:1.16 AS builder WORKDIR /app COPY . . RUN go build -o app FROM alpine:latest COPY --from=builder /app/app /app CMD ["/app"]3. 硬编码敏感信息问题: 在 Dockerfile 中存储敏感数据(如 API 密钥或密码)存在安全风险。解决方案: 使用环境变量或密钥管理工具: ENV DB_PASSWORD=${DB_PASSWORD}4. 安装后未清理问题: 残留的缓存文件或安装包会导致镜像臃肿。解决方案: 在同一条 RUN 指令中清理安装残留: RUN apt-get install -y curl && rm -rf /var/lib/apt/lists/*5. 未对 Dockerfile 添加说明问题: 缺少注释使得他人难以理解特定命令的用途。解决方案: 添加有意义的注释来解释命令: # Set working directory WORKDIR /usr/src/app9. 结论Dockerfile 是构建高效安全容器的基石。通过掌握 Dockerfile 语法、理解最佳实践并避开常见陷阱,您能简化应用程序容器化流程,实现跨环境的一致部署。关键要点:从最小化基础镜像开始,以减小体积并提升性能。利用多阶段构建来生成生产级镜像。始终测试与调试你的 Dockerfile 以确保可靠性。实施安全最佳实践 ,例如使用非 root 用户和密钥管理。使用 .dockerignore 排除不必要的文件,优化构建上下文。Todo:为你的项目尝试编写基础和多阶段的 Dockerfile。应用最佳实践并将调试技术集成到你的工作流程中。与团队分享你的 Dockerfile 以促进协作和反馈。遵循这份全面指南,你将不仅能构建稳健的 Dockerfile,还能提升作为 DevOps 专业人员的技能,从而为高效的 CI/CD 工作流和可扩展系统做出贡献。
2025年08月06日
12 阅读
0 评论
0 点赞
2025-08-05
Docker 安装 Oracle 11G
镜像docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/akaiot/oracle_11g:latestdocker tag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/akaiot/oracle_11g:latest docker.io/akaiot/oracle_11g:latest创建并启动容器mkdir -p /home/oracle/app/oracle11g/oradata# 容器内端口默认1521,且通过 -p 参数修改不成功,所以只能修改外部的端口docker run -itd --name oracle11g --restart=always -p 1523:1521 -v /home/oracle/app/oracle11g/oradata:/home/oracle/app/oracle11g/oradata docker.io/akaiot/oracle_11g:latest查看日志docker logs -f --tail 100 oracle11g/home/oracle/app/oracle/product/11.2.0/dbhome_2Processing Database instance "helowin": log file /home/oracle/app/oracle/product/11.2.0/dbhome_2/startup.logFixed Size 2213776 bytesVariable Size 402655344 bytesDatabase Buffers 1174405120 bytesRedo Buffers 24137728 bytesDatabase mounted.Database opened.SQL> Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing options/home/oracle/app/oracle/product/11.2.0/dbhome_2/bin/dbstart: Database instance "helowin" warm started.tail: unrecognized file system type 0x794c7630 for `/home/oracle/app/oracle/product/11.2.0/dbhome_2/startup.log'. Reverting to polling.登录到容器内docker exec -it oracle11g bash配置环境变量su rootPassword: helowinvi /etc/profileexport ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2export ORACLE_SID=helowinexport PATH=$ORACLE_HOME/bin:$PATHsource /etc/profilevi /home/oracle/.bashrcexport ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2export ORACLE_SID=helowinexport PATH=$ORACLE_HOME/bin:$PATHsource /home/oracle/.bashrc登录# 必须要切到 oracle 用户su oraclesqlplus / as sysdba查询数据库状态SELECT status FROM v$instance;STATUS------------OPEN连接验证• SID 和 Service Name 均为 helowin• 用密码密码: sys/oracle修改密码alter user system identified by test123;alter user sys identified by test123;异常记录ORA-00205: error in identifying control file, check alert log for more info异常原因:运行容器是指定的目录为 /home/oracle/app/oracle/oradata ,该目录是容器内安装Oracle自带的目录,换一个别的新建目录即可删除 Docker 容器docker stop oracle11gdocker rm oracle11g相关阅读• Docker 安装 Oracle 12C 🧐 分享、点赞、在看,给个3连击呗!👇
2025年08月05日
15 阅读
0 评论
0 点赞
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日
21 阅读
0 评论
0 点赞
2025-08-05
1panel面板设置
1、设置域名绑定可在 SSH 终端输入以下命令来取消域名绑定:1pctl reset domain2、开启了安全入口登录可在 SSH 终端输入以下命令来查看面板入口:1pctl user-info
2025年08月05日
21 阅读
0 评论
0 点赞
1
...
4
5
6
...
26