Sambaを使用して作成されたWindows共有があります。
それは私のubunutuサーバー/mnt/user_new
にあります/var/www/myproject/files/
から/mnt/user_new/files
にファイルをコピーします。これはファイルのバックアップ用です。元のファイルを削除します。
PHPを使用しています。フォームPHP試した
$file = '/var/www/html/bmw/myproject/files/0000000.pdf';
$newfile = '/mnt/user_new/0000000.pdf';
if (!copy($file, $newfile)) {
echo "failed to copy $file...\n";
}
しかし、許可拒否エラーが表示されます。
Severity: Warning
Message: copy(/mnt/user_new/0000000.pdf) [function.copy]: failed to open stream: Permission denied
LinuxサーバーからWindows共有にファイルをコピーする方法はありますか。私はアクセスウィンドウ共有のユーザー名とパスワードを持っていますが、ここでそれを使用する方法を知りません。ユーザー名とパスワードを渡す方法はありますか?.
正直に言うと、これはSambaを使用する初めての作業であり、Windows共有はネットワーク管理者によって作成されます。私はこの簡単なコピーに8時間近く費やしました。しかし、できませんでした。
私を助けてください 。前もって感謝します 。
そのため、LinuxサーバーにはローカルディレクトリにマウントされたWindows共有がありますが、どうやらそこに書き込むことはできません。この共有はゲストアクセスとして設定されているため、読み取り専用ステータスになっていると思います。この構成の問題を解決するための出発点として、 windows shareのマウントに関するubuntuドキュメント を参照してください。
当面の回避策として、コマンドラインまたはシェルスクリプトから smbclient
を使用してバックアップを実行することをお勧めします。このコマンドは、必要に応じてWindows共有のパスを見つけるのに役立ちます。
$ smbclient -L <hostname>
しかし、コメントで提案したように、FSブラウザー(Gnome、KDE、またはWindowsシェル)から検索する方が簡単かもしれません。このプログラムは、多かれ少なかれSMB/CIFSプロトコル上でftpクライアントのように機能しますが、正確なパラメーターが必要なので、調査する必要があります。たとえば、WindowsサーバーがActive Directoryドメインに属している場合、-k
パラメーターをsmbclient
に渡して通知する必要があります。また、コマンドラインでユーザー名とパスワードを渡す必要があります。マニュアルページで説明されている他の多くのパラメータがありますが、これは状況に応じて重要になる可能性があります(たとえば、接続を暗号化する必要がありますか?)。
対話モードでは、前述のように、このプログラムはftpクライアントのように機能します。したがって、ftpコマンドに精通している場合は、このツールに慣れているはずです。コマンドラインで一連のftp命令を渡すこともできます。これはおそらく、共有マウントが修正されるまでバックアップを自動化するために使用するものです。
最後に、PHPスクリプトからシェルコマンドを呼び出す必要があるときに便利な system
php関数についても言及しました。繰り返しますが、これはすべて、共有が修正されるまで一時的な解決策として使用する必要があります。スクリプトまたはsmbclient
からアクセスできるファイル構成ファイルのどこかに資格情報を書き込む必要があります、練習。可能であれば、資格情報がインタラクティブに提供される手動バックアップの作成を試みる必要があります。