簡體   English   中英

從oscent到遠程服務器的ssh mysqldump

[英]ssh mysqldump from oscent to remote server

我正在嘗試從我的虛擬主機到我的NAS存儲創建mysql數據庫的自動備份。

我只是剛剛開始學習shell命令所以請耐心等待 - 到目前為止我發現的是:

mysqldump 
   -uusername 
   -ppassword 
   --opt database_name | 
   gzip -c | 
   ssh user@ipaddress 
   "cat > /path-to-the-directory-on-nas/$(date +%Y-%m-%d_%H.%I.%S).sql.gz"

但這似乎返回以下錯誤:

-bash:/ path-to-directory-on-nas / $(date +%Y-%m-%d_%H.%I.%S).sql.gz:沒有這樣的文件或目錄

有誰知道如何克服這個問題,並實際將其保存到指定的存儲?

更改

cat > /path-to-the-directory-on-nas/$(date +%Y-%m-%d_%H.%I.%S).sql.gz

cat > /path-to-the-directory-on-nas/`date +%Y-%m-%d_%H.%I.%S`.sql.gz

確保該文件夾已存在。 至少在我的Ubuntu上工作:)

檢查遠程服務器上的目錄/ path-to-directory-on-nas /是否存在。

如果缺少,可以使用以下命令在ssh上創建它:

 ssh user@ipaddress mkdir -p /path-to-the-directory-on-nas/

(如果需要創建多個目錄樹,則使用-p)

如果要創建帶有時間戳的目錄,則應執行以下操作:

 ssh user@ipaddress mkdir -p /path-to-the-directory-on-nas/$(date '+%Y%M%D')/'

如果選擇在目錄路徑中包含時間戳,則需要將其包含在mysqldump命令使用的路徑中。

例:

成功將文件創建到遠程系統/ var / tmp上存在的遠程目錄

 $ date | ssh user@ipaddress 'cat > /var/tmp/file.txt'
 $ ssh user@ipaddress cat /var/tmp/file.txt
 Fri Oct 12 19:39:16 EST 2012

如果您遇到同樣的錯誤,請嘗試寫入不存在的目錄。

 $ date | ssh user@ipaddress 'cat > /var/Xtmp/file.txt'
 bash: /var/Xtmp/file.txt: No such file or directory

你應該進一步調試。 第一次嘗試

cat > /path-to-the-directory-on-nas/test.sql.gz. 

之后你應該嘗試日期是否有效:

echo $(date +%Y-%m-%d_%H.%I.%S)

然后你會知道路徑是否存在或者日期是否失敗。 從您的錯誤信息看起來似乎日期是問題,但您需要先確定。 然后你可以嘗試將日期分配給變量:

#!/bin/bash
 filename=$(date +%Y-%m-%d_%H.%I.%S);
    mysqldump 
       -uusername 
       -ppassword 
       --opt database_name | 
       gzip -c | 
       ssh user@ipaddress 
     "cat > /path-to-the-directory-on-nas/$filename.sql.gz"

更換

ssh user@ipaddress 
   "cat > /path-to-the-directory-on-nas/$(date +%Y-%m-%d_%H.%I.%S).sql.gz"

ssh user@ipaddress 
   "cat > /path-to-the-directory-on-nas/"$(date +%Y-%m-%d_%H.%I.%S)".sql.gz"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM