複数のサーバに圧縮ファイルを転送するプログラムを考えています。
---プログラム---
$server = array("hoge1.sample.co.jp", "hoge2.sample.co.jp");
foreach($server as $host){
$BaseDir = "/home/tmp/data";
$cmd = "cd $BaseDir;tar cvfz data.tar.gz data1 data2 data3";
system($cmd); ###ファイル圧縮
transfer($BaseDir,$host);
}
function transfer($base,$host){
$cmd = "scp ${base}/data.tar.gz $host:$base";
system($cmd); ###ファイル転送
}
------------------
このときscpで転送を行う際にパーミッションがないとエラーが表示されて転送ができません。プログラムの中で転送先のフォルダにパーミッションを与える方法など考えたんですが、なかなかいい方法が思いつきません。フォルダにパーミッションを与えて転送できるようにするにはどうしたらよいでしょうか。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
>相手先ホストのアカウントがなく、転送先フォルダにパーミッションがない場合、PHPのプログラムでパーミッション与えるのは難しいでしょうか??
相手先ホストのアカウントが無い場合、当然ながらSCPもSSHもできませんよ(できたら大変です)。
状況がよく判りませんが、転送元ホストのshellから、転送先ホストの所定のディレクトリにSCPやSSHを使ってファイルを置けないのであれば、PHP以前の問題です。
まず、転送元ホストのshellから、ファイルを転送先に送り込む方法を確立する必要があるかと思います。
No.1
- 回答日時:
>このときscpで転送を行う際にパーミッションがないとエラーが表示されて転送ができません。
なぜ、あらかじめパーミッションを与えておかないのでしょうか?
>プログラムの中で転送先のフォルダにパーミッションを与える方法など考えたんですが、
SCPが通るということは、SSHが通るのでしょうから、
http://pecl.php.net/package/ssh2
( 解説 http://www.doyouphp.jp/tips/tips_ssh2.shtml )
で相手先ホストにログインして、フォルダにパーミッションを与えるプログラム(setuid付き)を起動することはできると思います。
もしくは、単純に、フォルダにパーミッションを持っているユーザ(以下のfoobar)で、scpアクセスするとか。
scp ${base}/data.tar.gz foobar@$host:$base
また、転送方法を逆方向にするとか。つまり、AサーバからBサーバにPUTしているのを、BサーバからAサーバにGETしにいくようにするということです。
とりあえず、思いついたものを書いておきました。
もし参考になれば。
この回答への補足
>なぜ、あらかじめパーミッションを与えておかないのでしょうか?
実は転送先のフォルダの所有者はすでに決まっていて変更できないことになっているんです。分かりやすく書くと以下のような形になります。
--------------------------------------------------
Aサーバ(転送元のサーバ)
転送するファイル:/home/tmp/data/data.tar.gz
↓
Bサーバ(相手先ホスト)
転送先:/home/tmp/data → このフォルダの所有者は変更できない
---------------------------------------------------
>もしくは、単純に、フォルダにパーミッションを持っているユーザ(以下のfoobar)で、scpアクセスするとか。
実は現在、相手先ホストにはアカウントがないのでログインできない状態なんです。相手先ホストのアカウントがなく、転送先フォルダにパーミッションがない場合、PHPのプログラムでパーミッション与えるのは難しいでしょうか??
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) フォルダ内の特定 拡張子のファイルを一括実行するBat ファイルについて 4 2022/04/17 09:51
- Android(アンドロイド) androidでzip圧縮してから転送できるファイラー 3 2022/12/11 10:22
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- その他(プログラミング・Web制作) pandasでまとめてインデックスを削除するにはどうすればいいですか? たとえば、以下のプログラムで 1 2022/07/31 23:09
- C言語・C++・C# プログラミングの問題です。写真のプログラムの1から10を下のように入力しましたがプログラムが上手くい 3 2022/07/01 23:31
- Android(アンドロイド) Aloha Browser でダウンロードしたファイルをPCに転送するには? 1 2022/05/23 18:54
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、以下のプログラムをどう直せ 1 2022/07/09 22:16
- その他(開発・運用・管理) WindowsからSSHでサーバーにあるファイルをダウンロードできない…。 3 2022/04/24 11:08
- Facebook messengerに投稿したwordファイルはLINEに転送できませんか? 2 2023/03/26 14:54
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
FTPにて553エラー
-
cgiのパーミッションの設定の仕...
-
自宅サーバでのCGI関係エラーに...
-
ロリポップでCGIエラー500苦戦中
-
jcode.pl のパーミッション
-
VB6でレジストリファイルをイン...
-
EXCELファイルに誰がアクセスし...
-
CGIでソースがそのままでてしま...
-
《エクセルVBA》「他の人が該当...
-
CGIでの500エラー
-
cgi→csvが文字化け
-
VBAでサーバーにアクセスするに...
-
YY-BOARDについて
-
ASPからJavaScriptへの受け渡し...
-
perlからphpを実行して結果を得...
-
ケータイサイトの3社別自動振り...
-
「からし」と「マスタード」の...
-
ラジオボタンのグループ化
-
ASP(IIS?)のエラーについて
-
&や=、@を違うコードで表記したい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
FTPにて553エラー
-
Dreamweaverでのパーミッション...
-
pic16f873to873Aの違いはナンで...
-
パーミッション
-
VB6 FTPファイルのパーミッショ...
-
ローカルではうまくいってたの...
-
cgiからファイルの書き込みがで...
-
VB6でレジストリファイルをイン...
-
分かりません。誰か教えて
-
実行属性って?
-
サイトからCGIをダウンロー...
-
CGI設定の初歩的な質問
-
CGIの予約状況システムについて
-
Web Diary Professional設置後...
-
WEB PATIOが表示されない
-
CGIを覗かれないように
-
HPビルダー8でパーミッションを...
-
Perlの日記プログラムがIIS+Act...
-
属性値を変えられないのはなぜ...
-
SCPのファイル転送について
おすすめ情報