今天在整理文件,正好稍微梳理一下自己在不同设备上的备份方法,简单和大家分享下。(有不对的地方或者更好的建议欢迎评论区指出~)
先简单介绍一个ChatGPT给出的321备份策略(有很多种说法,这个是其中一种):
321备份原则是一种数据备份策略,旨在防止数据丢失。具体来说,它建议按照以下方式备份数据:
- 3份备份:也就是最少拥有你数据的三个副本。比如说,一个在你的电脑硬盘上(原始数据),剩下的两个在其他不同的存储媒介上。
- 2种不同的存储类型:这意味着你不能把所有的备份都放在同一种存储设备上,例如仅使用硬盘做备份。第二份备份应储存在不同的设备或系统上,比如外部硬盘,网络附加存储(NAS),DVD,云存储等。
- 1份离线(或离站)备份:这意味着你需要有一份备份是存储在离开你的日常工作区域的区域中的,最好是在完全不同的地理位置。这是为了防止像火灾、洪水这种可能摧毁你现场数据和备份的灾难。
按照321备份原则做好数据备份,你就具备了充分保护数据,防止灾难性数据丢失的准备。
服务器上的数据备份
这个适合那些手头上VPS不止一台的小伙伴使用。(最好有一台机器硬盘大一点)
其实之前也和大家已经介绍过了——用ChatGPT帮你写一个VPS定时自动备份脚本,不少小伙伴总喜欢尝试一些奇奇怪怪的VPS商家,这些商家说不定哪天就跑路了,但是架不住人家便宜啊,就是忍不住剁手要买,搭配这个脚本,可以让你少丢失一些数据。(开玩笑,任何VPS商家都有丢失数据的可能性,如果你觉得你的数据重要,就一定记得备份)
这边以Debian 11 系统为例子,如果看咕咕视频比较多的,应该都知道咕咕推荐大家玩docker把各个项目都放/root/data/docker_data
目录下(其实更好的是把配置文件和数据分开放),这个脚本就是备份我们的docker项目的,实现的功能如下:
把A服务器上的/root/data/docker_data
目录下的文件每天早上4点钟定时备份到B服务器的/root/data/backup_data
文件夹下,
- 备份文件在B服务器上最多保存3份,并以时间戳命名。
- B服务器的IP地址是:
150.117.211.107
, ssh端口是222
。(按需修改) - 备份的日志保存在A服务器的
/root/logs
文件夹下,并且日志包含时间信息 - 备份和传输的过程可以显示进度条,并且有提示信息,并且进度条最多显示100%(安装好pv,临时备份文件放在
/tmp
目录下,上传完成之后可以删掉) - 保留文件原有的属性(所有者等信息)
- 恢复备份的时候,只有
/root/data/docker_data
中的内容而不包括/root/data/...
完整路径
咕咕这边用的备份服务器是Hosthatch家的大盘鸡,当时65刀/3年的价格,有1T的硬盘,还有无限流量的BUG(标的20T,实际不统计流量),还不错的。(他家有过丢数据的情况,所以这个机器咕咕就用来跑下载和备份用了)
sudo -i
cd ~
apt update -y && apt upgrade -y
apt install pv rsync -y # 注意A、B服务器上都装上rsync
mkdir script
vim backup.sh
#!/bin/bash
# Variables
SOURCE_DIR="/root/data/docker_data/"
DEST_DIR="/root/data/backup_data/"
REMOTE_IP="150.117.211.107"
SSH_PORT=222
TMP_BACKUP="/tmp/data_backup_$(date +'%Y%m%d%H%M%S').tar.gz"
LOG_FILE="/root/logs/backup_$(date +'%Y%m%d').log"
# Start backup
echo "$(date) - Starting backup..." | tee -a $LOG_FILE
# Create the backup with tar, display progress with pv
tar czfP - $SOURCE_DIR --absolute-names --transform 's|^/root/data/||' | pv -p -t -e -r -s $(du -sb $SOURCE_DIR | awk '{print $1}') > $TMP_BACKUP
# Rsync the backup to the remote server, displaying progress
rsync -avhP --remove-source-files -e "ssh -p $SSH_PORT" $TMP_BACKUP root@$REMOTE_IP:$DEST_DIR | tee -a $LOG_FILE
# Remove backups in B server exceeding 3
ssh -p $SSH_PORT root@$REMOTE_IP "cd $DEST_DIR && (ls -t | head -n 3; ls) | sort | uniq -u | xargs rm -f"
# Cleanup temp file in case rsync failed to remove it
rm -f $TMP_BACKUP
echo "$(date) - Backup completed." | tee -a $LOG_FILE
chmod +x backup.sh
A服务器创建好文件夹
cd ~
mkdir logs
B服务器创建好文件夹
mkdir -p /root/data/backup_data/
A、B服务器之间创建免密码登录
# 在A服务器上
sudo -i
ssh-keygen # 一路回车即可
ssh-copy-id -i ~/.ssh/id_rsa.pub -p 222 root@150.117.211.107
每天早上4点执行备份:
crontab -e
在crontab界面中输入:
0 4 * * * /root/script/backup.sh
脚本操作包含敏感操作,如远程登录、文件传输等,在执行前,应确保所有操作、路径和细节均无问题。
可以根据需要修改脚本,比如修改备份文件名、备份路径、备份文件最多保留数目等参数。
咕咕的站点都在搬瓦工和Hetzner上,其中搬瓦工有免费的自动备份,Hetzner也有收费的自动备份功能,咕咕都用上了,搭配这个脚本,一定程度上减少了数据丢失的风险。
NAS的数据备份
咕咕之前用的威联通TS-453BMini(8G版本),系统还是比较复杂的(上周挂了小黄鱼打算出掉,有想要接盘的吗)
前俩周淘了一台群晖的Synology DS920+,发现这个系统才友好嘛。这边就以群晖来举例子。
首先说说RAID的事情。
这边直接放出我自己个人的做法:
不组RAID,不做SHR,全部四块硬盘用的都是BASIC。
简单聊一下为啥。
- SHR 群晖自己的RAID模式,适合小白,本质上是根据硬盘数量帮你自动组RAID1、RAID5之类的
- RAID0 读写速度翻倍,享受全部硬盘容量,但是一块坏了,数据就全丢了,风险太高(如果你是纯搞PT刷流量可以考虑)
- RAID1 其实本质就是一块硬盘完全同步另一块硬盘的数据,同步的作用,的确是可以一定程度帮忙恢复数据的(一块硬盘坏了),但是对我来说,重要的数据即使丢了一点也很可惜,还是得备份,而且RAID1还损失了一半的硬盘空间。
- RAID5 也有一定的容错能力,但是据说恢复数据非常非常慢,而且最好等你新硬盘到了再拆坏掉的硬盘,不然期间又坏了一块硬盘,你的数据就都没了。而且恢复期间服务用不了,比较讨厌。
- JBOD 这个曾经是咕咕在类似OVH和HZ独立服务器上最想要弄的模式,因为搞PT下载,一个盘只有2T不够用(qb挂载的问题只能有一个路径,换另一个路径似乎这个路径下就做不了种了),把4块2T合在一起,直接变8T就很爽了。最近才知道原来这种情况下万一有一块硬盘坏了,数据也是全丢的,那不如直接上RAID0 了(如果有错误,欢迎评论区指出)
所以咕咕最后的选择是全部BASIC模式,类似Windows上的CDEF盘一样,彼此不干扰,重要的数据自己再备份。
备份方案:
Cloud Sync 挂载 Onedrive备份重要文件(强烈建议大家可以搞一个office365的家庭版)
再用 USB Copy,备份一份到移动硬盘上。(咕咕用的是很多年以前的LaCie 1T版本,但是花了529 = = 没怎么关注移动硬盘了,欢迎大家在评论区推荐性价比高的)
这样一来,也符合321备份原则,可以放心数据安全问题了。
PS:其实不管是群晖还是威联通,本质都是Linux系统,也都能算“服务器”,完全也可以用前面服务器备份的方法来搞,不过既然这边有现成的套件,咕咕就用套件了
本地电脑的数据备份
这边咕咕用的就比较多了,咕咕日常使用的是MacBook Air,我开通了iCloud的2T套餐,手上又有家庭版的1T的Onedrive还有自建的Nextcloud
这边我都用了 = =
文稿和桌面文件夹用iCloud同步,和家里的MacMini配合使用起来还不错。
工作的文件大部分都在Onedrive里头,这个Windows电脑、Mac电脑都能同步,上下班不用再背电脑回去了。
挂载Nextcloud一般放一些个人的资料。Nextcloud有一个问题就是它没办法和iCloud和Onedrive一样有个“释放本地空间”的功能,这样会比较占本地的空间,没法想下载下载想释放空间释放空间,有点遗憾。
以上。写的有点粗糙,希望能够给大家有所启发。
有问题,或者文中有什么错误的地方也欢迎大家在评论区交流指正。
---------------
如何觉得文章内容不错,欢迎点击一下广告,支持一下咕咕😍😍😍
原创文章,作者:Roy,如若转载,请注明出处:https://iwanlab.com/321-backup/