[英]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.