需求
笔者需要将一台服务器上的所有数据备份到另一台服务器上。由于数据量比较大,需要长时间传输。
为了防止登录远程服务器可能中途断开连接,考虑使用tmux + rsync
组合进行数据备份迁移。
用法
-
首先确保备份服务器空间足够,避免传输过程将服务器存储空间用满情况。 -
启动tmux
$ tmux new -s backup
创建一个backup的tmux会话,并进入会话中。
-
执行rsync备份
在backup会话环境中执行以下命令
$ mkdir BACKUP_DIR # 创建备份目录
$ rsync -avz --exclude={'*.o','*.mod','p4/*'} remote_user@remote_ip:/path/to/need/backup/dir/ BACKUP_DIR
# 输入remote服务器用户密码
其中rsync命令选项意义:
-
-a
存档模式 -
-v
命令执行详细信息 -
-z
在传输过程中压缩数据 -
--exclude
排除匹配模式文件/目录传输,以上设置不传输*.o
和*.mod
编译临时生成文件以及p4
目录,根据自己需要进行设置。
使用SSH协议传输数据,remote_user@remote_ip:/patch/to/need/backup/ BACKUP_DIR
。
-
恢复tmux环境
如果tmux会话突然断开了,不用紧张,rsync命令仍在后台执行。执行以下命令再次进入tmux会话
$ tmux attach -t backup
-
退出TMUX环境
如果需要退出tmux会话,执行ctrl-b d
(先按Ctrl与b键,再按d键)退出tmux环境。