Windows から Linux へファイルを送る場合、Windows に共有フォルダを作成してそこを Linux でつつきにいくのが手っ取り早い場合があります。
本記事では Windows で作成した共有フォルダ内に任意のファイルを配置し、Linux でそのファイルにアクセスする簡単な方法を紹介します。
Contents
Linux が CIFS を理解しなければつつけない
Linux で Windows の共有フォルダにアクセスするにはまず「cifs-utils」とインストールする必要があります。
例えば CentOS の場合は以下を実行します。
yum install cifs-utils
なぜ「yum install cifs-utils」が必要かというと、Linux が Windows のファイル共有プロトコルである「SMB」を理解できるようにするためです。
SMB は元々 Windows 以外が利用できないプロトコルですが、後に Windows 以外も利用できるようになりました。それに伴い名前が SMB から CIFS(Common Internet File System)と変わっていたんですが、また SMB に戻ったという経緯があります。なので「yum install smb-utils」ではなく「yum install cifs-utils」でもさほど違和感はないというわけです。
マウント用のディレクトリを作成
次に Linux 側にディレクトリを作成します。作成するコマンドは以下です。
mkdir <任意のディレクトリ名>
この時作成するフォルダ名は Windows 側の共有フォルダと同じでもいいし、同じじゃなくてもいいです。
共有フォルダの準備
Windows 側で共有フォルダを用意します。なお、今回は共有フォルダの中に「Acronis Backup」というソフトウェアの Linux 用評価版 bin ファイルを置いておきました。
共有フォルダ名はなんでもいいですが、今回は「Win-Share」にしています。
次に適当なユーザで共有をかけます。
Linux で共有フォルダをマウントする
最後に Windows の共有フォルダを Linux にマウントします。以下のコマンドを参考にマウントしてください。
mount -t cifs -o username=Win-CL,password=P@ssw0rd //192.168.1.10/Win-Share /root/windows
これは適宜読み替えて欲しいのですが、「username」と「password」は共有フォルダにアクセス権限のある Windows 側のアカウント情報を入力。
「//192.168.1.10/Win-Share」は Windows の IPアドレスと共有フォルダ名。
「/root/windows」はあらかじめ作成した Linux のディレクトリ名です。
マウント後に共有フォルダ内にある Acronis Backup のファイルが Linux に共有されていることが分かります。
ありがちなエラー
以下のエラーは発生しがちです。
cifs_mount failed w/return code = -111
CIFS VFS: Error connecting to socket. Aborting operation.
CIFS VFS: cifs_mount failed w/return code = -111
Unable to find suitable address.
このエラーが発生した場合はネットワークを見直してください。ネットワーク的な不備があった場合に発生するエラーです。
cifs_mount failed w/return code = -112
Windows 10 から共有を張ろうとするとこうなることがあります。
CIFS VFS: cifs_mount failed w/return code = -112
mount: mount … failed: Host is down
その場合は以下の書式のように「vers=2.0(もしくは3.0)」を追加してください。
mount -t cifs -o username=Win-CL,password=P@ssw0rd,vers=2.0 //192.168.1.10/Win-Share /root/windows
ioctl error in smb2_get_dfs_refer rc=-5
下図のようなエラーが表示される場合があります。
CIFS VFS: ioctl error in smb2_get_dfs_refer rc=-5
mount error(16): Device or resource busy
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
その場合はカーネルを変えて実行するとうまくいく場合があります。
私の場合は「3.10.0-693.el7.x86_64」ではうまくいっていたのに「3.10.0-957.5.1.el7.x86_64」だと上記のエラーでうまくいきませんでした。
まとめ
- yum install cifs-utils
- ディレクトリの作成
- 共有フォルダの作成
- mount -t cifs -o username=ユーザ名,password=パスワード //WindowsIPアドレス/共有フォルダ名 ディレクトリパス