smbclient を使用したファイルの転送
この最後のステップでは、Linux システムと SMB 共有の間でファイルを転送する方法を学びます。
共有への再接続
SMB 共有に再度接続しましょう。
smbclient //localhost/testshare -U labex
プロンプトが表示されたら、パスワードを入力します。
Enter WORKGROUP\labex's password:
smbclient プロンプトが表示されるはずです。
Try "help" to get a list of possible commands.
smb: \>
共有へのファイルのアップロード
先ほど作成したテストファイルを SMB 共有にアップロードしましょう。まず、現在のローカルディレクトリを確認する必要があります。
smb: \> !pwd
これは、ローカルシステムで pwd コマンドを実行し、次のように表示されます。
/home/labex/project
テストファイルがあるディレクトリに変更する必要があります。
smb: \> lcd ~/project/smb-files
正しいディレクトリにいることを確認します。
smb: \> !ls
次のように表示されるはずです。
test.txt
次に、ファイルを SMB 共有にアップロードしましょう。
smb: \> put test.txt
ファイルが転送されたことを示すメッセージが表示されるはずです。
putting file test.txt as \test.txt (38.5 kb/s) (average 38.5 kb/s)
ファイルがアップロードされたことを確認します。
smb: \> ls
次のように表示されるはずです。
. D 0 Tue Nov 30 12:02:00 2022
.. D 0 Tue Nov 30 12:00:00 2022
shared-test.txt N 37 Tue Nov 30 12:00:00 2022
test-directory D 0 Tue Nov 30 12:01:00 2022
test.txt N 33 Tue Nov 30 12:02:00 2022
8467839 blocks of size 4096. 3524491 blocks available
共有からのファイルのダウンロード
次に、SMB 共有からローカルシステムにファイルをダウンロードしましょう。まず、ダウンロードしたファイルを保存するための新しいディレクトリを作成しましょう。
smb: \> !mkdir -p ~/project/smb-downloads
そのディレクトリに変更します。
smb: \> lcd ~/project/smb-downloads
次に、ファイルをダウンロードします。
smb: \> get shared-test.txt
ファイルが転送されたことを示すメッセージが表示されるはずです。
getting file \shared-test.txt of size 37 as shared-test.txt (37.0 KiloBytes/sec) (average 37.0 KiloBytes/sec)
ファイルがダウンロードされたことを確認します。
smb: \> !ls
次のように表示されるはずです。
shared-test.txt
複数のファイルに対する mget および mput の使用
mget および mput コマンドを使用すると、複数のファイルを一度に転送できます。ローカルシステムでさらにいくつかのファイルを作成してみましょう。
smb: \> !cd ~/project/smb-files && touch file1.txt file2.txt file3.txt
次に、すべての .txt ファイルを一度にアップロードしましょう。
smb: \> lcd ~/project/smb-files
smb: \> mput *.txt
各ファイルについて、確認を求められます。各転送を確認するには、Y と入力します。
mput test.txt? Y
putting file test.txt as \test.txt (38.5 kb/s) (average 38.5 kb/s)
mput file1.txt? Y
putting file file1.txt as \file1.txt (0.0 kb/s) (average 19.2 kb/s)
mput file2.txt? Y
putting file file2.txt as \file2.txt (0.0 kb/s) (average 12.8 kb/s)
mput file3.txt? Y
putting file file3.txt as \file3.txt (0.0 kb/s) (average 9.6 kb/s)
確認なしですべてのファイルを転送する場合は、プロンプトをオフにすることができます。
smb: \> prompt
smb: \> mput *.txt
同様に、複数のファイルをダウンロードするには、次のようにします。
smb: \> lcd ~/project/smb-downloads
smb: \> mget *.txt
完了したら、smbclient セッションを終了します。
smb: \> quit
非対話型コマンド
smbclient を使用して、対話型シェルに入ることなくコマンドを実行することもできます。たとえば、共有の内容をリスト表示するには、次のようにします。
smbclient //localhost/testshare -U labex -c 'ls'
プロンプトが表示されたらパスワードを入力すると、ディレクトリリストが表示されます。
Enter WORKGROUP\labex's password:
. D 0 Tue Nov 30 12:03:00 2022
.. D 0 Tue Nov 30 12:00:00 2022
file1.txt N 0 Tue Nov 30 12:03:00 2022
file2.txt N 0 Tue Nov 30 12:03:00 2022
file3.txt N 0 Tue Nov 30 12:03:00 2022
shared-test.txt N 37 Tue Nov 30 12:00:00 2022
test-directory D 0 Tue Nov 30 12:01:00 2022
test.txt N 33 Tue Nov 30 12:03:00 2022
8467839 blocks of size 4096. 3524491 blocks available
単一のコマンドでファイルをダウンロードするには、次のようにします。
smbclient //localhost/testshare -U labex -c 'get test.txt /home/labex/project/test-download.txt'
このコマンドは、共有から test.txt ファイルをダウンロードし、プロジェクトディレクトリに test-download.txt として保存します。
これで、smbclient を使用して SMB 共有に接続し、ディレクトリをナビゲートし、ファイルを転送する方法を十分に理解できました。これらのスキルは、Windows/Linux 環境が混在する環境で作業する際に不可欠です。