Windows10でシステムバックアップが取れない場合は

いやー取れなかった。しかも「バックアップに失敗しました。 ディスク領域が不足しているため、保存場所にボリュームのシャドウコピーを作成できません。」などとのたまう。バックアップを取るときに「バックアップ先に85GBぐらい必要です」みたいなメッセージが出ているにも関わらず、バックアップ先は200GBだったんでなんの問題があるのか数時間悶々としましたが、理屈はさておき下記コマンドを実行してから試してみたら無事に行きました。

WindowsPoerShellを管理者で実行して、

PS C:\WINDOWS\system32> reagentc /disable
REAGENTC.EXE: 操作は成功しました。

PS C:\WINDOWS\system32>

これでバックアップが取れるようになります。バックアップが終わったら元に戻しておきましょう。

PS C:\WINDOWS\system32> reagentc /enable
REAGENTC.EXE: 操作は成功しました。

PS C:\WINDOWS\system32>

参考:

Microsoft Windows 8.1にMicrosoft APPストアからオンラインアップグレードしたあと、システムバックアップイメージが作成できない

謹賀新年&VagrantでGCP

あけましておめでとうございます。

なにとぞ本年もよろしくご愛顧のほどひとえにお願い申し上げます。

というわけでvagrantでGCEのインスタンス立ち上げです。

まずはVagrantインストール。は終わったとして、Vagrant Google Compute Engine (GCE) Providerプラグインのインストールです。

Microsoft Windows [Version 10.0.16299.125]
(c) 2017 Microsoft Corporation. All rights reserved.

>vagrant plugin install vagrant-google
Installing the 'vagrant-google' plugin. This can take a few minutes...
Fetching: vagrant-share-1.1.9.gem (100%)
Fetching: excon-0.60.0.gem (100%)
Fetching: formatador-0.2.5.gem (100%)
Fetching: fog-core-1.45.0.gem (100%)
Fetching: fog-json-1.0.2.gem (100%)
Fetching: mini_portile2-2.3.0.gem (100%)
Fetching: nokogiri-1.8.1-x64-mingw32.gem (100%)
Nokogiri is built with the packaged libraries: libxml2-2.9.5, libxslt-1.1.30, zlib-1.2.11, libiconv-1.15.
Fetching: fog-xml-0.1.3.gem (100%)
Fetching: fog-google-0.5.5.gem (100%)
Fetching: public_suffix-3.0.1.gem (100%)
Fetching: addressable-2.5.2.gem (100%)
Fetching: multipart-post-2.0.0.gem (100%)
Fetching: faraday-0.13.1.gem (100%)
Fetching: jwt-2.1.0.gem (100%)
Fetching: signet-0.8.1.gem (100%)
Fetching: memoist-0.16.0.gem (100%)
Fetching: os-0.9.6.gem (100%)
Fetching: googleauth-0.6.2.gem (100%)
Fetching: extlib-0.9.16.gem (100%)
Fetching: autoparse-0.3.3.gem (100%)
Fetching: launchy-2.4.3.gem (100%)
Fetching: retriable-1.4.1.gem (100%)
Fetching: thread_safe-0.3.6.gem (100%)
Fetching: tzinfo-1.2.4.gem (100%)
Fetching: minitest-5.10.3.gem (100%)
Fetching: activesupport-4.2.10.gem (100%)
Fetching: google-api-client-0.8.7.gem (100%)
Fetching: vagrant-google-1.0.0.gem (100%)
Installed the plugin 'vagrant-google (1.0.0)'!

>

。。。いつの間にかgemなの?まあいいや。

前準備としてGCPのサービスアカウントを作ります。役割はComputeインスタンス管理者(ベータ版)としてました。鍵はダウンロードしておきます。

個人用のSSH公開鍵をGCPに登録しておきます。

サービスアカウントの鍵とSSH秘密鍵を先程作ったディレクトリにコピーしておきます。

適当にvagrant用のディレクトリを作ります。

そこでVagrantfileを作ります。

Vagrant.configure('2') do |config|
  config.vm.box = 'google/gce'

  config.vm.provider :google do |google, override|
    google.google_project_id = 'GCPプロジェクト名'
    google.google_client_email = 'サービスアカウント名'
    google.google_json_key_location = 'サービスアカウントの鍵'

    override.ssh.username = 'SSHで接続するときのユーザー名'
    override.ssh.private_key_path = '秘密鍵'
    #override.ssh.private_key_path = '~/.ssh/google_compute_engine'
  end

end

Vagrantfileを作るときの注意点はダブルクォーテーションが使えないみたいです。シングルクォーテーションにすること。

そしてvagrant –provider=googleを実行。

>vagrant up --provider=google
Bringing machine 'default' up with 'google' provider...
==> default: Box 'google/gce' could not be found. Attempting to find and install...
    default: Box Provider: google
    default: Box Version: >= 0
==> default: Loading metadata for box 'google/gce'
    default: URL: https://vagrantcloud.com/google/gce
==> default: Adding box 'google/gce' (v0.1.0) for provider: google
    default: Downloading: https://vagrantcloud.com/google/boxes/gce/versions/0.1.0/providers/google.box
    default: Progress: 100% (Rate: 348/s, Estimated time remaining: --:--:--)
==> default: Successfully added box 'google/gce' (v0.1.0) for 'google'!
==> default: Checking if box 'google/gce' is up to date...
==> default: Launching an instance with the following settings...
==> default:  -- Name:            i-2018010112-30572ce9
==> default:  -- Type:            n1-standard-1
==> default:  -- Disk type:       pd-standard
==> default:  -- Disk size:       10 GB
==> default:  -- Disk name:
==> default:  -- Image:           debian-8-jessie-v20160511
==> default:  -- Instance Group:
==> default:  -- Zone:            us-central1-f
==> default:  -- Network:         default
==> default:  -- Metadata:        '{}'
==> default:  -- Tags:            '[]'
==> default:  -- IP Forward:
==> default:  -- Use private IP:  false
==> default:  -- External IP:
==> default:  -- Preemptible:     false
==> default:  -- Auto Restart:    true
==> default:  -- On Maintenance:  MIGRATE
==> default:  -- Autodelete Disk: true
==> default:  -- Scopes:
==> default: Waiting for instance to become "ready"...
==> default: Machine is booted and ready for use!
==> default: Waiting for SSH to become available...
Enter passphrase for C:/vagrant/id_rsa:
==> default: Machine is ready for SSH access!
==> default: Rsyncing folder: /cygdrive/C/vagrant/ => /vagrant
There was an error when attemping to rsync a share folder.
Please inspect the error message below for more info.

Host path: /cygdrive/C/vagrant/
Guest path: /vagrant
Error: This rsync lacks old-style --compress due to its external zlib.  Try -zz.
Continuing without compression.

Could not create directory '/.ssh'.
Failed to add the host to the list of known hosts (/.ssh/known_hosts).
Permission denied (publickey).
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(226) [sender=3.1.2]

>

というわけでGCEができました。いくつかエラーが出ていますが、もともとWindowsで動かすのではなくMacで動かすことが想定されているのでしょう。

Vagrantfileに設定できる項目はこちらにまとめられているので見ておくといいでしょう。

なんで今さらVagrant?

Vagrantならvirtualboxでも使えるし。開発⇔ステージング⇔本番環境とまったく同じツールで構築できるのはでかいかなと。

CakePHP3事始め

わかんねーよ。

と最初に愚痴っておきます。

 

まあなにはともかくインストールなのか?マシンについてはこの間遊びで入れたUbuntu17.10があったのでそれを使うことにする。

そしてrootでtasksel。LAMP Serverをインストールする。このへんヘボOSのCentOSと違い、ApacheからPHPからMySQLまでまとめてサクッと入れてくれる。これだけでも開発環境作るのだいぶ楽になるのにね。

で、composerのインストール。公式サイトに書いてあったのをそのままコピー&実行。

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('SHA384', 'composer-setup.php') === '544e09ee996cdf60ece3804abc52599c22b1f40f4323403c44d44fdfdd586475ca9813a858088ffbc1f233e9b180f061') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"

composer.pharがご丁寧に実行権限付でできているので、/usr/binにコピー。

で、この辺のモジュールを追加。

apt install php-intl php-mbstring zip unzip php-simplexml -y

忘れてた。僕の見てる本だとWindows対応なので、デスクトップ環境入れてやらないかん。

またもtaskselでxubuntu-desktopを入れる。

なんか苦しい。寝たい。

デスクトップ使えるようになったのでcakephpのインストール(?)

composer create-project --prefer-dist cakephp/app samplecake

で、ライブラリのインストール(?)

$ composer install
Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Nothing to install or update
Generating autoload files
> Cake\Composer\Installer\PluginInstaller::postAutoloadDump
> App\Console\Installer::postInstall
Set Folder Permissions ? (Default to Y) [Y,n]? y
No Security.salt placeholder to replace.
$

最後の一行、超気になるけどまあいいや。で開発用サーバ起動。アクセス。

なんか手元の本と全然違う画面が出てますが。。。いいや。DBは設定してないからこれはしょうがない。