背景

项目已经停止运行,线上的服务已经停了
服务器使用 Cent OS 操作系统,使用宝塔面
服务器上有三个网站,一种一个网站约30G,主要是附件图片全部存在了本地,没有使用云存储,而剩余空间已经不足30G

尝试过程

1.直接备份
首先直接尝试备份,由于剩余空间不足,压缩文件无法创建,备份失败

2.SFTP 直接下载回本地
尝试使用 WinSCP 通过 SFTP 直接下载文件夹,可是由于小文件太多,程序预估下载时间需要数天,就算一直开机下载,也可能中间因为很多原因中断,还很可能不知道在哪里断的没办法断点续传,就几乎是不可能的。

3.直接打包通过宝塔后台下载
将另外两个网站打包后下载回本地,删除了服务器上的文件,终于够空间打包压缩备份了。打包成功后开始下载,预估时间六小时就关屏幕挂机下载了,可是第二天看到下载失败,应该是宝塔后台登录失效了,也没办法断电续传了。

4.通过宝塔自带的阿里云OSS存储备份
后来想到试试宝塔自带的阿里云OSS存储,用计划任务把网站备份到OSS上。一开始备份没成功,才意识到备份的原理是先备份到本地,然后上传到OSS,然后删除本地备份文件。
这样我先删除之前的备份,等待执行备份网站到OSS的计划任务就可以了,后期观察计划任务执行日志,发现打包成功后就是开始上传,看到网络流量的部分一直是全速上传,由于上传到OSS应该是通过相关接口的,不像我直接通过浏览器下载存在登录时间过长身份失效的问题,等待六小时后就可以通过OSS很快地下载回本地了。
光是这么一个开OSS,上传,下载回本地,就花了几块钱,还是挺贵的。

后记

来自 segmentfault 上 但丁的贝雅特丽齐 的回答

tar -zcvf xxx.tgz xxx.log --remove-files

如果不需要压缩,可以去掉 z 参数,打包成 .tar 文件。

关键是这个 --remove-files 参数,加了 -v 参数可以观察打包的过程,可以看到加了这个参数,是一个个把文件移动到打包文件内,打包成功了就移除源文件,就不会占用额外的空间。