Sambaでサーバから大量ファイルコピー



借りている二つのVPSの一方からもう一方に大量のファイルをコピーする必要が出てきた。

両方のVPS共にtailscaleのVPNに入っているので、面倒な認証の必要の無いものが欲しかった。しかし、これが以外に面倒。

ftpは簡単だが、一つずつしかコピーできないの却下。rcpというものがあったらしいが、暗号化されていないとのことで、現代ではどうやってインストールするのかさえわからず。rcoを使うには、rsh, rsh-serverをまずインストールしろと書いてあるところがあるが、それさえもインストール方法がわからず。もちろん、rsyncやらscpやらは、認証が必要になってくるし、rsyncを使うまでも無い。

というわけで、どうなるかわからないが、Sambaを使ってみた。

インストールと設定

How to Setup Samba Server in RHEL, Rocky Linux and AlmaLinuxを参考にした。

dnf install samba samba-common samba-client

/etc/samba/smb.confは以下とした。Samba4でパスワード無し接続共有より。

[global]
  map to guest = Bad User
  log file = /var/log/samba/%m
  log level = 1

[public]
  path = /home/public
  read only = no
  guest ok = yes

そして

mkdir /home/public
chown nobody:nobody /home/public

Sambaを起動する

systemctl start smb
systemctl enable smb

この後で、同じVPN上のWindowsマシンからアクセスさせてみると、問題なく接続できた。もちろん、外部からはアクセスできない。

ただし、Tailscaleの使い方、その6:レンタルVPSサーバにアクセスするを参照のこと。

rootのディレクトリを見れるようにする

設定を以下のように変え、smbを再起動してみる。

[global]
  map to guest = Bad User
  log file = /var/log/samba/%m
  log level = 1

[nopublic]
  path = /home/nopublic
  guest account = root
  read only = no
  guest ok = yes

rootのフォルダを作成

mkdir /home/nopublic
systemctl restart smb

これでrootの持ち物も、少なくとも閲覧ができる。書き込みが可能になる方法は不明。とりあえずコピーできれば良いので放置。

コピー先のサーバからアクセス

コピー先のサーバに移る。

dnf install samba-common samba-client cifs-utils

マウントポイントを作成

mkdir /mnt/source-server

マウントする。

mount -t cifs -u username=root,password= //コピー元サーバ/nopublic /mnt/source-server

確認

ls -l /mnt/source-server

これで簡単にコピーできるはず、と思ってやってみると、以下のエラーが出る。

cp: cannot open '/mnt/***/***/filter/c19cd1b7aed918fff3edfeb8d557d621463c902a8b5988c67d059c0e00e1d095.hs' for reading: Permission denied
cp: cannot access '/mnt/****/****/***/****': Permission denied

しかし、コピー元でtar化して、それをコピーして解凍すると正常だ。何か設定が間違っているのだろうか?

未分類

Posted by ysugimura