将我的网络空间备份到 NAS

将我的网络空间备份到 NAS

首先:我不知道这是否是提问的正确地方,请在您删除我的帖子之前告诉我我应该去哪里,那就太好了,谢谢!

我想要做什么(以及我的选择是什么):

我有一个 synology NAS,它可以执行一些任务(是的,我是菜鸟),这些任务是“linux 命令”。我的目标是将我的整个网络空间或其上的特定文件夹备份到 NAS,但只备份新的或更改的文件(就像它与 git 一起工作一样)。

我无法使用 SSH 密钥(我认为这是最好的方法),因为我无法在我的 NAS 上正确设置它们(这是可能的,但我缺乏知识,尽管如果您能帮助我我将不胜感激,但这对我来说太复杂了,我读了很多东西,但就是不起作用,所以我尝试了不使用 SSH 密钥的方法(至少这样我可以稍微了解一下发生了什么))。

所以我的伪代码将是这样的:

  1. 将 NAS 连接到网络空间
  2. 转到我的特定文件夹(在我的情况下,FTP 登录已仅限于该文件夹,因此我们可以跳过该步骤)
  3. 在我的 NAS 上创建一个文件夹/或导航到该文件夹​​(它已经存在)
  4. 首次克隆网络空间文件夹中的所有内容
  5. 对整个文件夹进行 gzip 压缩,并按日期命名
  6. 再次执行时,脚本应该只检查是否有任何文件已被更改,并且只更新文件、下载新文件或删除旧文件(因此我的每个 zip 文件都将是一个完全正常工作的网络空间,没有任何不必要的文件)
  7. 现在我的主文件夹已与网络空间同步,并再次压缩

我目前拥有的:

lftp -u MY-FTP-USERNAME,MY-FTP-PASSWORD MY-WEBSPACE-URL 'mirror /test'

tar -zcvf /volume1/BACKUPS/backup-$(date +%Y-%m-%d-%H-%M-%S).tar.gz /volume1/BACKUPS/MY-WEBSPACE-NAME/

rm -rf /volume1/BACKUPS/MY-WEBSPACE-NAME/

其中存在一些问题:

  1. 每次都会下载整个网络空间,因为我无法让“仅新文件”这个功能正常工作。文件大小不是问题,但这些小文件太多了,需要很长时间,而且会阻塞 NAS 的资源
  2. 由于某种原因,解压后 gzip 包含完整路径/volume1/BACKUPS/MY-WEBSPACE-NAME/,只有最后一个文件夹中才包含我的文件。我只想将MY-WEBSPACE-NAME包含我的文件的文件夹压缩。

如果你能帮我解决这个问题,我将不胜感激。不一定非要这样lftp,我也试过了,wget但也没用。所以只要有用,就去做吧。上次我做这件事已经是不久前了,但如果我记得没错的话,我不能用了,git但我不知道为什么了

答案1

对于问题 1,如果您使用的是 GNU tar(您可能正在使用),则可以使用--after-date=date或选项。您可以使用类似或或 的-N date表达式- 请小心使用正确的引号。据说格式对 GNU tar 有点依赖于版本(不过我还没有遇到问题),因此如果一个格式不起作用,那么其他格式中至少有一个应该可以。--after-date='2 days ago'tar --newer 20210601-N '2021-06-01 12:00:00'

您也可以使用路径(以“/”开头!)代替日期。在这种情况下,tar 将仅存储在该文件修改时间之后修改或创建的文件。如果您将备份保存在 /volume1/BACKUPS 中,则可以使用“-N /volume1/BACKUPS/name-of-your-latest-backup”。

对于问题 2,最简单的方法是使用带有-C选项的 tar,如下所示:

tar -zcvf /volume1/BACKUPS/backup-$(date +%Y-%m-%d-%H-%M-%S).tar.gz -C /volume1/BACKUPS/MY-WEBSPACE-NAME/ .

这指示 tar “cd” 到/volume1/BACKUPS/MY-WEBSPACE-NAME/当前目录(“。”,现在是 ),然后 tar 当前目录(“。”)/volume1/BACKUPS/MY-WEBSPACE-NAME/

答案2

如果我理解了你想要做什么,我建议你使用一个允许你以版本化方式存档所有文件的程序,以便始终保留所有文件,例如使用 ZPAQ 技术。使用类似“tar-snapshot-enabled”的软件。

如果我理解正确的话,你的网络空间被 Synology NAS 当作文件夹“挂载”了,对吗?不确定,因为我已经移植到了 QNAP 而不是 Synology(PS 无法评论,声誉仍然不够)

相关内容