ファイルシステムをマウントせずにランダムアクセスに Samba を使用しますか?
-
06-07-2019 - |
質問
root アクセス権を持たないマシンを使用しており、ランダム アクセス モードで Samba サーバー上のファイルにアクセスしたいと考えています。smbclient を使用してファイル全体を転送できることはわかっていますが、ファイルが非常に大きい (>1 GB) ため、ランダム アクセスが可能なリモート ファイルとして扱いたいと考えています。
前述した問題は、このマシン (Linux ボックス) への root アクセス権がないため、リモート Samba ファイル システムをマウントできないことです。
Samba サーバー上のファイルの内容にランダムにアクセスできるユーザーレベルのソリューションはありますか?カーネルファイルシステムクライアントが実行していることはすべて、ユーザーレベルのアプリケーションから実行できるはずです。
ところで、必要なのは読み取り専用アクセスのみであり、リモートファイルは変更されないことが保証されています。
解決
Samba ソースを調べた後の私自身の質問に答えるには、次のようにします。通常のファイル処理要素がすべて含まれているクライアント ライブラリ libsmbclient があります。smbc_open、smbc_fstat、smbc_lseek、smbc_read など。たとえば、これはファイルを逆方向に読み取るスニペットです (真のシークが行われていることを確認するためだけに)。
fd = smbc_open(path, O_RDONLY, 0);
smbc_fstat(fd, &st);
for (offset = st.st_size - BUFLEN; offset > 0; offset -= BUFLEN) {
smbc_lseek(fd, offset, SEEK_SET);
smbc_read(fd, buffer, BUFLEN);
}
(わかりやすくするためにエラーチェックを削除しました)
他のヒント
ルート権限なしでファイルシステムをマウントするために smbmount
を使用してみてください:
mkdir ~/temp
smbmount //{server}/{share} ~/temp -o username=username={username},password={password}
編集: mount
ではなく smbmount
を使用するように更新されました。