著名なカブロソコミュニティへのご挨拶! クラウドストレージでのサイトバックアップのトピックは非常に広く開示されています。 しかし、質問に対して:1001番目の自転車を発明する価値があるかどうか、私はいつも答えます-それは価値があります。
多くの管理者の典型的な状況:
- 仮想/非仮想サーバーがあります。
- サイトを作成してからサポートしているクライアントがいくつかあります。
- 顧客サイトのバックアップの問題があります。
そして、お客様のYa。Disksでバックアップを整理してみませんか? ファイルだけでなく、データベースダンプもバックアップしますか? そして、彼らに指示してください:
神は禁じます、我々は近づいてくるカマズに行きます、あなたのサイトは常にあなたのY.ディスクにあります。
なぜなら Yandexについて話しているのはもちろん、サーバー上のドメインをYandexに委任しました。 サーバーをロードする理由 Yandexは、smtpプロトコル経由でメールを処理できます。 同時に、YandexとNSが管理を引き継ぎます。 実際には便利です。
異なるYa.Diskアカウントへのバックアップを整理するには何が必要ですか:
- サーバーにssmtpをインストールして構成します。
- 必要なクライアントI.ディスクをインストールして構成します。
- バックアップ用のbashスクリプトを作成および構成します。
- cronでタスクを登録します。
そしてもちろん、Yandexで作成されたroot@your-site.ruという形式の大切なメールがあります。 root@your-site.ruに代わって、バックアップに関する手紙を受け取ります。
この記事で提案されているアルゴリズムは、
Ubuntu 16.04を搭載したサーバーでテストされています。
サーバーにssmtpをインストール、構成、テストする
すでにサーバーから自分にメールを送信している場合は、この項目をスキップしてください。それ以外の場合は読みます。
なぜなら サーバーには多くのユーザーがいます。ルートスーパーユーザーで作業する必要があります。 さらに、データベースファイルとデータベースパスワードをユーザーファイルに書き込み、このすべてのデータを/ルートディレクトリに保存する必要があります。
ルートのssh-connectionを閉じましたか? suを実行できるのは、最も信頼できるユーザーのみです。
コンソールで実行します:
su cd /root apt update && apt upgrade apt install ssmtp
/ルートディレクトリに移動し、ssmtpをインストールしました。 それ以降のすべてのコマンドもこのディレクトリで実行されます。
ssmtp構成の編集:
nano /etc/ssmtp/ssmtp.conf
フォームにそれをもたらします:
root=root@your_site.ru mailhub=smtp.yandex.ru:465 AuthUser=root@your_site.ru AuthPass=your_passwd AuthMethod=LOGIN FromLineOverride=YES UseTLS=YES Hostname=your_site.ru
構成は明らかであり、コメントするものはありません。
それだけです! これで問題を解決できます。
/ rootでのバックアップに関するレターのテンプレートを作成し、ssmtpの動作を確認しましょう
nano rsync_email_orig
フォームに持っていきましょう:
To: your_email@gmail.com From: root@your-site Subject: Backup sites Info on backup:
自分にメールを送信:
cp rsync_email_orig rsync_email_orig_test echo 'Test msg' >> rsync_email_orig_test ssmtp your_email@gmail.com < rsync_email_orig_test rm -f rsync_email_orig_test
問題はないはずです。設定は基本です。
クライアントのインストール、構成I.ディスク
私は仕事にクライアントIを使用しています。開発者Anton Batenevのディスク:
github.com/abbat/ydcmdこの特定のクライアントが選ばれた理由:
- 別のYandexアカウントで作業できます。
- 必要なものだけを同期できます。
ydcmdをインストールするには、次のコマンドを実行します。
sudo add-apt-repository ppa:abbat/ydcmd sudo apt update sudo apt install ydcmd
私たちが検討しているクライアントは、/ usr / binにコピーされたpythonコマンド-ydcmd.pyにすぎません。 動作させるには、お客様のYandexアカウントのトークンを取得する必要があります。
トークンを取得するプロセスを説明することは意味がありません。 Githubの詳細:
github.com/abbat/ydcmd 、またはYandex
マニュアル 。
トークンを受け取った後、お客様用に異なる構成を作成します。 2つの異なるトークンがあります。1つはすべてのサイトに共通で、2つ目はサービス契約が締結されている個々のクライアント用です。 したがって、この記事では、すべてのユーザー用とユーザー獣医用の2つの構成に焦点を当てます。
/ rootにデフォルト構成を作成します
nano /root/.ydcmd.cfg
フォームにそれをもたらします:
[ydcmd] token = 1234567890
同様に、ユーザーvetの設定を作成します。このユーザーのサイトは別のYandex.Diskにバックアップされます。
nano /root/.ydcmd_vet.cfg
また、フォームにそれをもたらします:
[ydcmd] token = any_token
両方の構成のydcmdの動作を確認します。
ydcmd stat ydcmd --config=.ydcmd_vet.cfg stat
どちらの場合も、次のようなものが出力されるはずです。
name: disk exif: {} resource_id: 21239186:e9065863c345ergdfghjfgy51da3c5e06bc12345afeb14158ddcaae created: 2012-04-04T20:00:00+00:00 modified: 2012-04-04T20:00:00+00:00 path: disk:/ comment_ids: {} type: dir revision: 1354646733351472
通常の仕組み:
ydcmd --help
Ya.Diskiにバックアップ用のフォルダーを作成します。
ydcmd mkdir backup ydcmd --config=.ydcmd_vet.cfg mkdir backup
これで準備は完了です。Ssmtpが機能し、バックアップレターテンプレートが作成され、Ya.Diskクライアントが異なるアカウント用に構成されます。 / rootフォルダーで作業していることを思い出してください。
バックアップ用のbashスクリプトの準備
実際、bashスクリプトには新しいものは何もありません。 覚えていないさまざまなソースからの編集。 スクリプトは1日おきに実行され、最後の3つのコピーが保存されます。 なぜそう 私にとってより便利だからです 誰でも自分で変更できます。
実際には、ここに変数を登録する必要があります。
そして、ここでの場合:
if [ $((10
FILE変数が何であるかが明確でないだけです。
FILE=user_list_vet
FILE変数は、次の形式のcsvファイルにすぎません。
user1;site1.ru;DB_name1;user_DB_1;passwd_DB_1 user1;site2.ru;DB_name2;user_DB_2;passwd_DB_2 user2;site3.ru;DB_name3;user_DB_3;passwd_DB_3 ...
バックアップごとに、データを使用して独自のcsvファイルを作成します。
system_username; ドメイン DB_for_dump; db_user_name; DB_password
当然、システムユーザーの名前はユーザーのホームディレクトリの名前と一致します。 ユーザーvet-ホームディレクトリもvetです。
バックアップに必要なcsvファイルを作成し、ファイル
に余分な空行がないことを追跡
します ! スクリプトには空の行のチェックはありません!
つまり csvファイルを作成するとき-カーソルは、保存されるとき
、最後の行の最後になければなりません。
すべてが試運転の準備ができています。
もう一度すべてをチェックします。
- rsync_email_origレターテンプレートがあり、ssmtpが機能する
- さまざまな構成用にYa.Diskクライアントydcmdを構成しました
- rsync.shのすべての変数を編集しました
- 異なるバックアップ用に異なるcsvファイルを作成しました
ルートスーパーユーザーフォルダーで作業します。 少量のデータを持つユーザーに対してスクリプトを実行しようとします。このテストユーザーは獣医です。ユーザー名をパラメーターとしてスクリプトに渡します。
./rsync.sh vet
すべてが透明でシンプルなので、問題はないはずです。
エラーへ:
mysqldump: [Warning] Using a password on the command line interface can be insecure.
私たちは注意を払いません。
しかし、待ち伏せがある可能性があります。スクリプトは単に動作を停止し、何もしないことがあります。
次の行を見てください。
そして、1を0に変更し、再び開始しようとします。
起こるべきこと:
実際にはすべて。 cronでタスクを登録することは残っています。私にとってはこのように見えます:
su crontab -e
00 01 * * * /bin/bash /root/rsync.sh all 00 03 * * * /bin/bash /root/rsyn.sh vet
ご覧のとおり、cronは午前1時に実行され、異なるバックアップに対して午前3時に実行されます。 スクリプト自体は1日で機能します。
それだけです。建設的な批判、コメント、明確化を待っています。