综合类门户网站有哪些,网站开发的论文课题,wordpress 安装路径,做聚美优品网站得多少钱文章目录 1、rsync实现类似git push pull功能1. 基础概念2. 示例操作3. 定制化和进阶用法4. 定时同步#xff08;类似自动化#xff09; 2 命令简化1. 动态传参的脚本2. Shell 函数支持动态路径3. 结合环境变量和参数#xff08;更简洁#xff09;4. Makefile 支持动态路径… 文章目录 1、rsync实现类似git push pull功能1. 基础概念2. 示例操作3. 定制化和进阶用法4. 定时同步类似自动化 2 命令简化1. 动态传参的脚本2. Shell 函数支持动态路径3. 结合环境变量和参数更简洁4. Makefile 支持动态路径 使用场景远程有一台无法连接互联网的服务器性能强大本地有一台性能差的电脑但可以上网。那么要合并这两台电脑的功能取其强那么做为程序员就是在本地编辑再同步到远程然后在远程执行。 rsync 是一个高效的文件同步工具但它不像 Git 那样具有版本控制功能。你可以通过
rsync 在本地和远程主机之间同步文件实现类似 Git 的
push 和
pull 操作。那么将使用rsync实现这个功能 1、rsync实现类似git push pull功能
以下是如何用 rsync 实现类似 Git 的 push 和 pull 操作 1. 基础概念
Push将本地的文件同步到远程。Pull将远程的文件同步到本地。
rsync 的基本语法
rsync [选项] 源路径 目标路径2. 示例操作
Push 操作本地 → 远程
rsync -avz --delete /local/path/ userremote_host:/remote/path//local/path/ 是本地目录注意末尾的 /。userremote_host:/remote/path/ 是远程主机的目标路径。关键选项 -a归档模式保留文件权限、时间戳等。-v显示详细信息。-z启用压缩提高传输效率。--delete删除目标路径中不在源路径中的文件保持完全同步。
Pull 操作远程 → 本地
rsync -avz --delete userremote_host:/remote/path/ /local/path/语法类似于 push只是把源路径和目标路径互换。 3. 定制化和进阶用法
排除某些文件或目录 使用 --exclude 选项
rsync -avz --delete --exclude node_modules/ --exclude *.log /local/path/ userremote_host:/remote/path/使用 SSH 密钥认证 为了避免频繁输入密码可以设置 SSH 密钥认证
生成 SSH 密钥ssh-keygen -t rsa将公钥复制到远程主机ssh-copy-id userremote_host测试同步操作 使用 --dry-run 选项模拟操作检查同步内容
rsync -avz --dry-run /local/path/ userremote_host:/remote/path/4. 定时同步类似自动化
可以使用 cron 或 Windows 任务计划程序实现定时同步。例如
Linux 上的 cron 示例 编辑 cron
crontab -e添加如下内容每 30 分钟同步一次
*/30 * * * * rsync -avz --delete /local/path/ userremote_host:/remote/path/Windows 系统任务计划程序 将 rsync 命令写入 .bat 文件并通过任务计划程序定时运行。 注意事项
没有版本控制rsync 不支持历史记录如果需要像 Git 那样的版本管理可以结合 Git 使用。同步时注意删除操作使用 --delete 时要确保备份数据以免误删文件。网络问题rsync 的增量同步和中断恢复机制在网络不稳定时非常有用。
这套流程可以很好地模拟 push 和 pull 的功能但如果需要更复杂的版本管理功能建议直接使用 Git。
2 命令简化
如果路径是动态变化的可以设计一个更灵活的解决方案让你在运行时传递路径参数。以下是几种方法实现这一需求 1. 动态传参的脚本
编写一个脚本支持在运行时指定路径
脚本内容 创建一个名为 sync.sh 的脚本内容如下
#!/bin/bash# 检查参数
if [ $# -lt 3 ]; thenecho Usage: $0 [push|pull] [local_path] [remote_path]exit 1
fiACTION$1
LOCAL_PATH$2
REMOTE_PATH$3
REMOTE_USERuser # 替换为你的远程用户名
REMOTE_HOSTremote_host # 替换为你的远程主机if [ $ACTION push ]; thenrsync -avz --delete $LOCAL_PATH $REMOTE_USER$REMOTE_HOST:$REMOTE_PATH
elif [ $ACTION pull ]; thenrsync -avz --delete $REMOTE_USER$REMOTE_HOST:$REMOTE_PATH $LOCAL_PATH
elseecho Invalid action: $ACTION. Use push or pull.exit 1
fi赋予执行权限
chmod x sync.sh使用方法 运行时传递路径
./sync.sh push /local/path /remote/path
./sync.sh pull /local/path /remote/path2. Shell 函数支持动态路径
在 Shell 配置文件如 ~/.bashrc 或 ~/.zshrc中定义一个动态路径的函数
函数定义
function sync() {if [ $# -lt 3 ]; thenecho Usage: sync [push|pull] [local_path] [remote_path]return 1filocal action$1local local_path$2local remote_path$3local remote_useruser # 替换为你的远程用户名local remote_hostremote_host # 替换为你的远程主机if [ $action push ]; thenrsync -avz --delete $local_path $remote_user$remote_host:$remote_pathelif [ $action pull ]; thenrsync -avz --delete $remote_user$remote_host:$remote_path $local_pathelseecho Invalid action: $action. Use push or pull.return 1fi
}激活函数
source ~/.bashrc # 或 ~/.zshrc使用方法
sync push /local/path /remote/path
sync pull /local/path /remote/path3. 结合环境变量和参数更简洁
在脚本中结合环境变量减少重复输入常用的用户名和主机名
脚本内容
#!/bin/bashREMOTE_USER${REMOTE_USER:-user} # 默认远程用户名
REMOTE_HOST${REMOTE_HOST:-remote_host} # 默认远程主机if [ $# -lt 3 ]; thenecho Usage: $0 [push|pull] [local_path] [remote_path]exit 1
fiACTION$1
LOCAL_PATH$2
REMOTE_PATH$3if [ $ACTION push ]; thenrsync -avz --delete $LOCAL_PATH $REMOTE_USER$REMOTE_HOST:$REMOTE_PATH
elif [ $ACTION pull ]; thenrsync -avz --delete $REMOTE_USER$REMOTE_HOST:$REMOTE_PATH $LOCAL_PATH
elseecho Invalid action: $ACTION. Use push or pull.exit 1
fi运行脚本时指定环境变量
REMOTE_USERmyuser REMOTE_HOSTmyhost ./sync.sh push /local/path /remote/path4. Makefile 支持动态路径
用 Makefile 传递路径参数
Makefile 示例
push:rsync -avz --delete $(LOCAL_PATH) userremote_host:$(REMOTE_PATH)pull:rsync -avz --delete userremote_host:$(REMOTE_PATH) $(LOCAL_PATH)使用方法 运行时指定变量
make push LOCAL_PATH/local/path REMOTE_PATH/remote/path
make pull LOCAL_PATH/local/path REMOTE_PATH/remote/path通过这些方式你可以实现动态指定路径同时保持命令简洁推荐根据使用场景选择 脚本 或 Shell 函数它们最适合经常使用和路径灵活的需求。