Linux

將我的網站空間備份到 NAS

  • July 2, 2021

首先:我不知道這是否是正確的地方,請在刪除我的文章之前告訴我我可以去哪裡,那太好了,謝謝!

我想做什麼(以及我的選擇是什麼):

我有一個 Synology NAS,它可以執行(是的,我是菜鳥)是“linux 命令”的任務。我的目標是將我的整個網路空間或其中的特定文件夾備份到 NAS,但只有新的或更改的文件(如它可以與 git 一起使用)。

我不能使用 SSH 密鑰(這將是我假設的最佳方式),因為我無法在我的 NAS 上正確設置它們(這是可能的,但我缺少知識,即使如果你能幫助我,我將不勝感激那些,這對我來說太複雜了,我讀了一堆東西,但它不起作用,所以我嘗試了沒有 SSH 密鑰的方式(至少這樣我理解了一點點))。

所以我的虛擬碼是這樣的:

  1. 將 NAS 連接到網路空間
  2. 轉到我的特定文件夾(在我的情況下,FTP 登錄已經僅限於該文件夾,因此我們可以跳過它)
  3. 在我的 NAS 上創建一個文件夾/或導航到它(它已經存在)
  4. 第一次從 webspace 文件夾中複製所有的東西
  5. gzip 整個文件夾並按日期命名 zip
  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,如果您使用的是 GNU tar(您可能是),則可以選擇--after-date=date-N date. --after-date='2 days ago'您可以使用或tar --newer 20210601或之類的表達式-N '2021-06-01 12:00:00'- 請注意使用正確的引號。使用 GNU tar 格式有點依賴於版本(不過我還沒有遇到任何問題),所以如果一個不工作,至少其他一個應該工作。

您也可以使用路徑(以“/”開頭!)而不是日期。在這種情況下, tar 將僅儲存在所述文件的修改時間之後修改或創建的文件。如果您將備份保存在 /volume1/BACKUPS 中,則可以使用“-N /volume1/BACKUPS/name-of-your-latest-backup”。

對於問題 2,最簡單的方法是使用 tar-C選項,如下所示:

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/.

引用自:https://serverfault.com/questions/1067804