centos/7+Vagrant+VirtualBoxでrsyncが失敗する解決法(There was an error when attempting to rsync a synced folder.)

centos/7+Vagrant+VirtualBoxでrsyncが失敗する解決法(There was an error when attempting to rsync a synced folder.)

centos/7+Vagrant+VirtualBoxでrsyncが失敗する解決法(There was an error when attempting to rsync a synced folder.)

centos/7+Vagrant+VirtualBoxでrsyncが失敗する解決法(There was an error when attempting to rsync a synced folder.)
最終更新日:2020.11.05

centos/7+Vagrant+VirtualBoxでローカル環境中にrsyncでエラーが出て詰まったので解決法です。
なんとも毎回なんだかのエラーに捕まっている気がします。

ナコ
はやく、はやく作業に入りたい…
ナコ
迫りくる納期!!!!!

エラー内容

ターミナル表示

There was an error when attempting to rsync a synced folder.
Please inspect the error message below for more info.

Host path: /Users/×××/Vagrant/○○○/
Guest path: /vagrant
Command: "rsync" "--verbose" "--archive" "--delete" "-z" "--copy-links" "--no-owner" "--no-group" "--rsync-path" "sudo rsync" "-e" "ssh -p 2222 -o LogLevel=FATAL   -o ControlMaster=auto -o ControlPath=/var/folders/_n/z03bkj3d2z38c0q2hkg57cz00000gq/T/vagrant-rsync-20200731-2137-vy2548 -o ControlPersist=10m  -o IdentitiesOnly=yes -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -i '/Users/×××/Vagrant/○○○/.vagrant/machines/default/virtualbox/private_key'" "--exclude" ".vagrant/" "/Users/×/Vagrant/○○○/" "vagrant@127.0.0.1:/vagrant"
Error: symlink has no referent: "/Users/○○○/Vagrant/○○○/frontend-dev-env/node_modules/node-pre-gyp/node_modules/.bin/detect-libc"
symlink has no referent: "/Users/○○○/Vagrant/○○○/frontend-dev-env/node_modules/node-pre-gyp/node_modules/.bin/rc"
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1209) [sender=3.1.3]

Google翻訳さんに翻訳をお願いすると
同期フォルダーをrsyncしようとしたときにエラーが発生してるよ。
詳細については、以下のエラーメッセージを確認してください。

だってよ…rsyncがうまくいってないのはわかったけどさっぱりわからん!
用意されたboxとローカルとのvagrantのversionの違いかな?

解決方法

vagrant-vbguestプラグインをインストールする

ターミナル・コマンドライン

コピー

vagrant plugin install vagrant-vbguest

vagrant-vbguestプラグインをいれてみましょう。
これは自分の環境にある VirtualBox のバージョンと Boxや にインストールされている Guest Addition のバージョンが違う場合に、VirtualBox のバージョンに合わせて自動で最新化してくれます!
ありがたい。

Installed the plugin ‘vagrant-vbguest (0.24.0)’!

OK!無事にインストールできました。
再びvagrant upしてみましょう。

ターミナル・コマンドライン

コピー

 vagrant up
Bringing machine ‘default’ up with ‘virtualbox’ provider…
==> default: Checking if box ‘centos/7’ version ‘2004.01’ is up to date…
==> default: Machine already provisioned. Run `vagrant provision` or use the `–provision`
==> default: flag to force provisioning. Provisioners marked to run always will still run.

無事に起動出来ました〜!良かった。

その他の解決法

上の方法で解決しなかった方、諦めてはいけません。

Vagrantfileにsynce先を指定する

Vagrantfile

コピー

config.vm.synced_folder "./", "/vagrant", type: "virtualbox"
config.vm.synced_folder "./vmshare", "/vmshare", create: true, type:"virtualbox"

同期できないって言ってるので同期先を指定しちゃいましょう。
追加する場所はVagrantfile内のこの辺りでOKです。
centos/7+Vagrant+VirtualBoxでrsyncが失敗する解決法(There was an error when attempting to rsync a synced folder.)

vagrant自体の設定をいじってみよう

Vagrantにバグがあるらしいので

$VAGRANT_HOME\embedded\gems\gems\vagrant-1.8.0\plugins\synced_folders\rsync\helper.rb

をテキストエディタで開いて以下の部分を削除しちゃいましょう。

helper.rb

コピー

"-o ControlMaster=auto " +
"-o ControlPath=#{controlpath} " +
"-o ControlPersist=10m " +

まとめ

3つの解決法を紹介しました!
プロジェクトの初回でコケると作業が進まないのでどれかで治って動くといいなぁ…