以下脚本保存成.ps1格式，按照实际修改里面变量。# 请修改这些变量的值 # 这里填写你网站服务器ip $IP="111.22.122.248" $PORT="22" # 站点名称，用于给网站目录打包后命名 $WEBNAME="www.test.com"; # 这里填写网站程序目录 $WEBDIR="/www/wwwroot/www.test.com" # 这里填写Mysql数据库的root密码，如果不需要密码请填123456等任意字符 $DBPASS="nm7KYiSPLsPZpjme" # 这里填写数据库的名称 $DBNAME="wordpress_db" # 这里填写本地备份目录，例如/root/backup $BACKUPDIR="D:\backups" # 保留14天的备份，可以改成30天，200天等 $EXPIRE_DAYS=14 #------------------------------------- # 以下应该不需要修改了 # 备份目录不存在则新建 if(-Not(Test-Path -Path $BACKUPDIR )){ New-Item -ItemType directory -Path $BACKUPDIR } # 准备备份目录 New-Item -ErrorAction Ignore -ItemType directory -Path $BACKUPDIR\db; New-Item -ErrorAction Ignore -ItemType directory -Path $BACKUPDIR\tar; New-Item -ErrorAction Ignore -ItemType directory -Path $BACKUPDIR\files; # 判断目录创建是否成功 if(!(Test-Path -Path $BACKUPDIR\db ) -or !(Test-Path -Path $BACKUPDIR\tar) -or !(Test-Path -Path $BACKUPDIR\files)){ echo "无法创建备份目录"; exit 1; } # 在服务器远程备份数据库 $DBFILE=$DBNAME+"-"+((Get-Date).ToString("yyyyMMdd_HHmmss"))+".sql.gz"; echo "数据库备份名："+$DBFILE; # 删除已有数据库备份 ssh -p $PORT root@$IP "rm -f ~/$DBNAME*.sql.gz" # MySql账号密码保存在服务器 /etc/mysql/conf.d/mysqldump.cnf文件中 ssh -p $PORT root@$IP "mysqldump -u root $DBNAME | gzip > ~/$DBFILE"; # 命令行使用明文密码方式会有警告 #ssh -p $PORT root@$IP "mysqldump -u root -p$DBPASS $DBNAME | gzip > ~/$DBFILE"; # 下载远程文件，注意端口-P要大写 scp -P $PORT root@${IP}:~/$DBFILE $BACKUPDIR\db\; # 删除数据库备份文件 ssh -p $PORT root@$IP "rm -f ~/$DBFILE"; #rm -rf root@${IP}:~/$DBFILE ;# 没搞定端口 # 将网站所在文件夹打包压缩 $ZIP_FILE=$WEBNAME+"-"+((Get-Date).ToString("yyyyMMdd_HHmmss"))+".tar.gz"; ssh -p $PORT root@$IP "tar -zcPvf ~/$ZIP_FILE $WEBDIR"; scp -P $PORT root@${IP}:~/$ZIP_FILE $BACKUPDIR\tar\; # 删除备份文件 ssh -p $PORT root@$IP "rm -f ~/$ZIP_FILE"; exit 0;这是从Linux脚本转过来的，有几个问题需要处理：1、SSH没法在命令行指定密码。要用公匙登录，在PowerShell下输入：ssh-keygen -t rsa -b 4096 #备份服务器上生成RSA公钥然后，突然发现PowerShell识别不了ssh-copy-id，网上搜到的教程，复制下面这段脚本，粘贴到Windows终端，按回车运行即可。function ssh-copy-id([string]$userAtMachine, $args){ $publicKey = "$ENV:USERPROFILE" + "/.ssh/id_rsa.pub" if (!(Test-Path "$publicKey")){ Write-Error "ERROR: failed to open ID file '$publicKey': No such file" } else { & cat "$publicKey" | ssh $args $userAtMachine "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys || exit 1" } }上面这段其实就是，根据ssh-copy-id的执行逻辑来编写的shell脚本。这样以后，就可以成功使用ssh-copy-id了。然后将公钥传到网站服务器：ssh-copy-id -i ~/.ssh/id_rsa.pub root@网站服务器ip2、mysqldump 命令行使用明文密码方式会有警告。需要把MySql账号密码保存在服务器 /etc/mysql/conf.d/mysqldump.cnf 文件中[mysqldump] ...... user=root password=password3、现在每次都打包下载，后续可能数据量会很大，需要改为增量备份。