从oscent到远程服务器的ssh mysqldump
我正在尝试创建mysql数据库从虚拟主机到NAS存储的自动备份 我才刚刚开始学习shell命令,请耐心听我说-到目前为止,我发现:从oscent到远程服务器的ssh mysqldump,mysql,linux,ssh,mysqldump,remote-server,Mysql,Linux,Ssh,Mysqldump,Remote Server,我正在尝试创建mysql数据库从虚拟主机到NAS存储的自动备份 我才刚刚开始学习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" 但
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:/nas/$date+%Y-%m-%d\u%H.%I.%S.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"
与
检查远程服务器上是否存在指向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/Xtmp/file.txt'
bash: /var/Xtmp/file.txt: No such file or directory
检查远程服务器上是否存在指向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/Xtmp/file.txt'
bash: /var/Xtmp/file.txt: No such file or directory
改变
cat > /path-to-the-directory-on-nas/$(date +%Y-%m-%d_%H.%I.%S).sql.gz
到
确保该文件夹已存在。至少在我的Ubuntu上工作过:更改
cat > /path-to-the-directory-on-nas/$(date +%Y-%m-%d_%H.%I.%S).sql.gz
到
确保该文件夹已存在。至少在我的Ubuntu上工作过:你应该进一步调试。初试
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"
您应该进一步调试。初试
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"
谢谢YaK-不幸的是,它似乎没有任何区别。谢谢YaK-不幸的是,它似乎没有任何区别。你使用什么存储引擎?mysqlhotcopy对于MyISAMNot来说要快得多——我怎么才能找到这些信息呢;请参阅引擎专栏您使用的存储引擎是什么?mysqlhotcopy对于MyISAMNot来说要快得多——我怎么才能找到这些信息呢;请参阅引擎专栏谢谢dannyla-您能解释一下我如何在远程服务器上用当前日期和时间包装目录吗?使用与创建转储文件相同的过程,但是您可能需要删除一些时间分辨率,例如秒。sshuser@ipaddressmkdir-p/指向nas上目录的路径-$date'+%Y-%m-%d_%H'/谢谢dannyla-请您也解释一下如何在远程服务器上用当前日期和时间包装目录?使用与创建转储文件相同的过程,但是您可能需要删除一些时间分辨率,例如秒。sshuser@ipaddressmkdir-p/指向nas上目录的路径-$date'+%Y-%m-%d_%H'/谢谢raynix-我会再试一次。恐怕它也不起作用。我已经用pwd检查了目录,并将其复制到命令中,以确保它是正确的路径等。但仍然-不走运-没有得到它可能是什么的线索。还要确保您可以输入该目录并在那里写入文件。虚拟主机是CentOs 6.2,我不是100%安装在我的Qnap NAS上的,但我相信它有点Linux的味道。谢谢raynix-我会再试一次。恐怕它也不起作用。我已经用pwd检查了目录,并将其复制到命令中,以确保它是正确的路径等。但仍然-运气不好-没有得到它可能是什么的线索。还要确保您可以输入该目录并在那里写入文件。虚拟主机是CentOs 6.2,我不是100%安装在我的Qnap NAS上,但我相信这是某种Linux风格。