어떻게 정시에 데이터베이스를 백업하고 칠우운을 업로드합니까
서버 데이터베이스 백업 파일을 칠우 클라우드에 업로드
#!/bin/bash
# vuemall
# blog_runner vuemall
# admin vuemall
#
backUpFolder="/home/Garen/work/dbbackup/vuemall" //
date_now=`date +%Y_%m_%d_%H%M`
backFileName=vuemall_$date_now
# ,
cd $backUpFolder
mkdir -p $backFileName
mongodump -h 127.0.0.1:27017 -d vuemall -u blog_runner -p admin -o $backFileName
#
tar zcvf $backFileName.tar.gz $backFileName
#
rm -rf $backFileName
파일 업로드
1을 생성하고 AccessKey + SecretKey(개인센터='비키 관리에서 볼 수 있음) + bucket(스토리지 공간 이름)에 따라 token을 생성합니다.2. 이미지 원본(파일 흐름/파일 주소)과 token을 사용하여 칠우 저장 이미지에 정보를 제출한다.업로드 경로
1. 서버 사이드 업로드: 로컬 파일 업로드, 바이트 그룹 업로드로 나뉜다.2. 클라이언트 업로드: Base64 모드 업로드, Blob 모드 업로드;서버 nodjs 업로드
경로가/backup/qiniu/에서 실행npm init
생성==qiniu_config.js==npm i qiniu // SDK
다음은 qiniu_config.js의 내용 'use strict';
import * as qiniu from 'qiniu'
export const getToken = (bucket) => {
var accessKey = ' accesskey';
var secretKey = ' secretKey;
var bucket = bucket
var mac = new qiniu.auth.digest.Mac(accessKey, secretKey);
var options = {
scope: bucket
}
var putPolicy = new qiniu.rs.PutPolicy(options);
return putPolicy.uploadToken(mac);
}
upload를 만듭니다.js 'use strict';
import * as qiniu from 'qiniu'
import {getToken} from './qiniu_config.js'
const uploadToken = getToken('blog_node') // blog_node
console.log(uploadToken)
const config = new qiniu.conf.Config();
config.zone = qiniu.zone.Zone_z0; //
const formUploader = new qiniu.form_up.FormUploader(config);
const putExtra = new qiniu.form_up.PutExtra();
const parts = process.env.NODE_ENV.split('@')
const file = parts[1] + '.tar.gz'
const filePath = parts[0] + '/' + file
const key=file; //
const localFile = filePath; //
formUploader.putFile(uploadToken, key, localFile, putExtra, function (respErr,
respBody, respInfo) {
if (respErr) {
throw respErr;
}
if (respInfo.statusCode == 200) {
console.log(' ')
console.log(respBody);
} else {
console.log(respInfo.statusCode);
console.log(respBody);
}
});
그 중에서 대응하는 기계실은 다음과 같다. 1. 화동qiniu.zone.Zone_z012, 화북qiniu.zone.Zone_화남qiniu.zone.Zone_z24, 북미qiniu.zone.Zone_na0 node를 사용하여 업로드를 실행하기 때문입니다.js에서 오류가 발생합니다.
SyntaxError: Unexpected token import
그 이유는 현재 node는 일부 ES6의 문법만 지원하고 일부 ES6 문법은 지원하지 않으며import가 그 중의 하나이기 때문이다.이 문제를 해결하려면 대체할 방안을 찾을 수 있다
experimental-modules
파라미터를 사용합니다.모든 파일 이름 접미사를 mjs
node –experimental-modules index.mjs
npm i babel-register babel-preset-env --save-dev
를 설치하여 만듭니다.babelrc {
"presets": [
["env", {
"targets": {
"node": "current"
}
}]
]
}
새 포털 파일은 원래 포털 파일require를 들어옵니다.
require('babel-register')({
presets: [ 'env' ]
})
// Import the rest of our application.
module.exports = require('./upload.js')
본고는 babel-resiger 설치 방법으로 디렉터리에 생성
start.js
따라서 .backup.sh
스크립트의 마지막 줄에 #
NODE_ENV=$backUpFolder@$backFileName node /backup/qiniu/start.js
스크립트
.backup.sh
를 실행하면 칠우운 백엔드에서 이미 백업된 데이터베이스 파일을 볼 수 있다정시 작업 시작
우리는 백업을 자동으로 실행하고 칠우운에 업로드하는 시간을 설정하고 싶습니다. 크론탭 아래는crontab의 사용법입니다.일반적으로centos에서는 자동으로 설치됩니다.자세한 설정은 스크립트 설정을 참조할 수 있습니다
yum install crontabs
service crond start //
service crond stop //
service crond restart //
service crond reload //
service crond status //
ntsysv // crontab
tail -f /var/log/cron //
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
매일 02:00을 루트 사용자로 설정
0 2 * * * root sh /backup/qiniu/.back.sh
이 시간에 스크립트를 시작하여 데이터베이스 백업을 실행하고 칠우운에 업로드하는 데 성공했습니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.