时不时的需要对Ubuntu进行装机,头痛.需要安装这样那样的软件/工具,以及一些运行环境.
确实需要完整的备份和恢复功能.
AI搜索到一些方面和资料,先摘抄如下.
# 将整个根分区备份到外部硬盘 (/mnt/backup)
sudo rsync -aAXv --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} / /mnt/backup/
# 还原时,需要从Live USB启动,然后反向执行上述命令
sudo rsync -aAXv /mnt/backup/
# 或者
sudo rsync -aAXHvh --progress \
--exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found","/var/log/*","/home/*/.cache/*"} \
/ /path/to/backup/location/
-a: 归档模式(保留权限、链接等)。
-A: 保留ACL(访问控制列表)。
-X: 保留扩展属性。
-H: 保留硬链接。
-v: 详细输出。
-h: 人类可读的文件大小。
--progress: 显示传输进度。
--exclude=...: 排除临时、虚拟或不需要备份的目录。
# 恢复:
sudo rsync -aAXHvh --progress /path/to/backup/location/ /mnt/
通过tar压缩备份
# 创建一个压缩的归档文件
sudo tar -cvpzf /path/to/backup/backup_$(date +%Y%m%d).tar.gz \
--exclude=/backup_*.tar.gz \
--exclude=/proc --exclude=/tmp --exclude=/mnt --exclude=/dev \
--exclude=/sys --exclude=/run --exclude=/var/log/* \
/
-c: 创建归档。
-v: 详细模式。
-p: 保留文件权限。
-z: 使用gzip压缩。
-f: 指定归档文件名
sudo tar -xvpzf /path/to/backup/backup_*.tar.gz -C /mnt --numeric-owner
--numeric-owner: 确保文件所有者以数字ID恢复,避免用户名映射问题。
应该不会使用dd,毕竟只是网络服务器
# 备份整个磁盘 (例如 sda)
sudo dd if=/dev/sda of=/path/to/backup/sda_backup.img bs=4M status=progress
# 备份单个分区 (例如根分区 sda2)
sudo dd if=/dev/sda2 of=/path/to/backup/root_partition.img bs=4M status=progress
# 将镜像恢复到磁盘
sudo dd if=/path/to/backup/sda_backup.img of=/dev/sda bs=4M status=progress
使用dd不方便,也太大.AI推荐了partclone
sudo apt install partclone
基本备份命令 (以ext4为例):
sudo partclone.ext4 -c -s /dev/sda2 -o /path/to/backup/sda2_partclone.img
-c: 创建备份。
-s: 源设备。
-o: 输出文件。
恢复方法:
sudo partclone.ext4 -r -s /path/to/backup/sda2_partclone.img -o /dev/sda2
-r: 恢复模式。
避免在主机上建立文件以及中转,直接通过ssh将目标文件放到服务器上.
# 命令在源机器上执行
sudo partclone.ext4 -c -s /dev/mapper/ubuntu--vg-ubuntu--lv -O - | \
ssh user_on_debian@100.82.160.27 "cat > /path/to/backup/ubuntu-lv-backup-$(date +%Y%m%d).img"
# 使用 gzip (单线程) 压缩后传到服务器
sudo partclone.ext4 --force -c -s /dev/mapper/ubuntu--vg-ubuntu--lv -O - | \
gzip -c | \
ssh ease@100.92.125.39 "cat > /vol1/bak/ubuntu-server-backup-$(date +%Y%m%d).img.gz"
# 使用 pigz (多线程,更快,如果已安装)
sudo partclone.ext4 --force -c -s /dev/mapper/ubuntu--vg-ubuntu--lv -O - | \
pigz -c | \
ssh ease@100.92.125.39 "cat > /vol1/bak/ubuntu-server-backup-$(date +%Y%m%d).img.gz"
打赏