將我的網站空間備份到 NAS
首先:我不知道這是否是正確的地方,請在刪除我的文章之前告訴我我可以去哪裡,那太好了,謝謝!
我想做什麼(以及我的選擇是什麼):
我有一個 Synology NAS,它可以執行(是的,我是菜鳥)是“linux 命令”的任務。我的目標是將我的整個網路空間或其中的特定文件夾備份到 NAS,但只有新的或更改的文件(如它可以與 git 一起使用)。
我不能使用 SSH 密鑰(這將是我假設的最佳方式),因為我無法在我的 NAS 上正確設置它們(這是可能的,但我缺少知識,即使如果你能幫助我,我將不勝感激那些,這對我來說太複雜了,我讀了一堆東西,但它不起作用,所以我嘗試了沒有 SSH 密鑰的方式(至少這樣我理解了一點點))。
所以我的虛擬碼是這樣的:
- 將 NAS 連接到網路空間
- 轉到我的特定文件夾(在我的情況下,FTP 登錄已經僅限於該文件夾,因此我們可以跳過它)
- 在我的 NAS 上創建一個文件夾/或導航到它(它已經存在)
- 第一次從 webspace 文件夾中複製所有的東西
- gzip 整個文件夾並按日期命名 zip
- 再次執行時,腳本應該只檢查是否有任何文件被更改,並且只更新文件、下載新文件或刪除舊文件(所以我的每個 zip 都將是一個完全工作的網路空間,沒有任何不必要的文件)
- 所以現在我的主文件夾與網路空間是最新的並再次壓縮
我目前擁有的:
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/
一些問題:
- 它每次都會下載整個網路空間,因為我無法讓“只有新文件”的東西起作用。文件大小不是問題,但是這些小文件太多了,需要很長時間,只是阻塞了NAS的資源
- 出於某種原因,解壓縮時的 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/
.