linux使用scp+ssh实现自动远程备份数据库

1、首先备份数据库到本地

#!/bin/bash
mysql_pwd=”123456″
mysql_dump=”/usr/bin/mysqldump”
cur_year=$(date +”%Y”)
cur_month=$(date +”%m”)
cur_day=$(date +”%d”)
dump_path=”/data/backup/abc/$cur_year-$cur_month”
if [ ! -d “$dump_path” ]; then
mkdir -p “$dump_path”
fi
$mysql_dump -uroot -p$mysql_pwd –socket=/data/mysql_data/mysql.sock –opt abc_2018 | gzip > $dump_path/abc-$cur_day.sql.gz

2、将本地备份文件同步到远程服务器

具体操作:

要求:把192.168.0.2机上的test.tar拷贝到192.168.0.3机器的上

192.168.0.2服务器上:
mkdir -p ~/.ssh
chmod 700 ~/.ssh
ssh-keygen -t rsa -P “” -f ~/.ssh/id_rsa

192.168.0.3服务器上:
mkdir -p ~/.ssh

在192.168.0.3建立好.ssh目录后,从192.168.0.2拷贝~/.ssh/id_rsa.pub到192.168.0.3中~/.ssh目录下:
scp ~/.ssh/id_rsa.pub root@192.168.0.3:~/.ssh)。

把从192.168.0.2拷贝过来的id_rsa.pub重命名为authorized_keys(cp id_rsa.pub authorized_keys)

chmod 600 ~/.ssh/authorized_keys

此时拷贝就不需要输入密码:scp test.tar root@192.168.0.3:/var/www

下面就可以把此命令放到计划任务中而自动执行了­:
crontab -e
50 04 * * * /data/backup.sh

vscode Module parse failed: Unexpected character问题的解决

vue-loader@15.*之后除了必须带有VueLoaderPlugin 之外,还需另外单独配置css-loader。

const VueLoaderPlugin = require('vue-loader/lib/plugin')

module.exports = {
  // ...
  module: {
    rules: [
      {
        test: /\.vue$/,
        loader: 'vue-loader'
      },
      {
        test: /\.css$/,
        use: ['style-loader','css-loader']
      }
    ]
  }
  plugins: [
    new VueLoaderPlugin()
  ]
}

单元测试phpunit安装的使用实例(转自CSDN)

一、配置phpunit
1、到phpunit官网下载相应的版本,我的是php 5.6,选择phpunit 4.8:https://phar.phpunit.de/phpunit-old.phar,并把名字改为 phpunit.phar
2、把phpunit.phar放到项目目录app_api下,然后将项目目录D:\webroot\app_api添加到环境变量,以便直接使用phpunit测试
3、按快捷键 Win + R ,输入cmd并回车,进入存放phpunit.phar的路径,输入 echo @php “%~dp0phpunit.phar” %* > phpunit.cmd 并回车,接着输入 phpunit –version 查看版本(如果有误,再试一次)

D:\>cd wamp/

D:\wamp>cd www/api

D:\wamp\www\api>echo @php "%~dp0phpunit.phar" %* > phpunit.cmd

D:\wamp\www\api>phpunit --version
PHPUnit 4.8.36 by Sebastian Bergmann and contributors.

 

二、使用phpunit进行测试
1、使用phpunit,必须使用类 ,简单以login.php为例
<?php

error_reporting(0);

require_once './classes/class_login.php';

$username = $_POST["username"];

$password = $_POST["password"];

$log = new Login;

$response = $log->login($username, $password);

if ($response != "false") {

//登录成功后的处理......

}

echo $response;

?>
2、新建文件夹 classes,并在里面新建 class_login.php ,内容为
<?php

class Login {

// 测试工具PHPUnit要求一定要在这里给变量默认值,于是默认为空。

public function login($username = "", $password = "") {

$con = mysqli_connect("localhost", "root", "123456", "big-bak");

if (!$con) {

die('Could not connect: ' . mysqli_error());

} else {

mysqli_query($con, "SET NAMES utf8");

$result = mysqli_query($con, "SELECT id,username,email FROM ih_user where username = '$username' and password = '$password'");

if (!$result || mysqli_num_rows($result) == 0) {

return "false";

} else {

$result_arr = mysqli_fetch_assoc($result);

return json_encode($result_arr, JSON_UNESCAPED_UNICODE);

}

}

}

}

?>
3、开始写测试文件 login_test.php
<?php

require_once dirname(__FILE__) . '/classes/class_login.php';

class LoginTest extends PHPUnit_Framework_TestCase {

public function testLoginSuccess() {

$expected = '{"id":"1","username":"test","email":"test100@163.com"}';

$username = 'test';

$password = '123456';

$lg = new Login;

$actual = $lg->login($username, $password);

$this->assertEquals($expected, $actual);

}

function testLoginFail() {

$expected = 'false';

$username = '11111';

$password = '11111';

$lg = new Login;

$actual = $lg->login($username, $password);

$this->assertEquals($expected, $actual);

}

}

?>


4、执行phpunit单元测试
正常测试:
将用户test的密码故意修改错再测试:
———————
来源:CSDN
原文:https://blog.csdn.net/nuli888/article/details/51864604