web-dev-qa-db-ja.com

特定のファイルのみをscpします

変更したファイルをssh経由でgodaddyにコピーしようとしています。 Godaddyはひどいので、もちろんrsyncを許可していません。 scpを使用できますが、実際には変更されたファイルのみをコピーしたいと思います。これは不可能だと思うので、おそらくすべてのphpファイルしかscpできないのではないかと思っていました。

ただし、サブディレクトリはたくさんあるので、-rオプションを使用する必要があります。

scpを使用して、拡張子phpのすべてのファイルを再帰的にコピーする方法はありますか?

scp -r -name "*php" /local/html/ user@server:/home/html/(機能しません)

望ましい結果

 //ローカルマシン上
 $ find ./source

source/1.php
source/2 .php 
 source/sub 
 source/sub/3.php 
 source/sub/4.php 
 source/sub/DONT-copy.txt 
 source/sub/DONT-copy.png 
 source/sub/sub2 
 source/sub/sub2/5.php 
 source/sub/sub2/6.php 
 
 //ファイルをコピーするコマンド
 $ [scp command here] 
 
 //リモートサーバー上
 $ find ./destination

destination/1.php 
 destination/2.php 
 destination/sub 
 destination/sub/3.php 
 destination/sub/4.php 
 destination/sub/sub2 
 destination/sub/sub2/5.php 
 destination/sub/sub2/6.php 

これは機能しません

 //ローカルマシン上
 $ find ./source

source/1.php
source/2 .php 
 source/sub 
 source/sub/3.php 
 source/sub/4.php 
 source/sub/DONT-copy.txt 
 source/sub/DONT-copy.png 
 source/sub/sub2 
 source/sub/sub2/5.php 
 source/sub/sub2/6.php 
 
 //ファイルをコピーするコマンド
 $ cd source; scp -r * .php user @ remote:/ destination 
 
 //リモートサーバー上
 $ find ./destination

destination/1.php
destination/2 .php 

おそらくfindを試して使用することもできますが、これはそのままでは機能しないと確信しています

 find ./source -name "* .php" -exec scp {} user @ remote:{} \; 

検索で複数の{}演算子を使用できるとは思わないため、これは機能しません。

また、たとえばfindが/users/johndoe/documents/source/1.phpを返し、リモートサーバーの/home/jane/www/destination/1.phpに到達するようにしたい場合など、リモートサーバーでパスを整列させるのは難しい場合があります。

4
cwd

host onyがプッシュを許可し、rsyncを許可しない場合は、次のようにします。

  • ターゲット構造に似た「シャドウ」ディレクトリをローカルマシンに作成します
  • rsyncを使用してこのシャドウディレクトリにプッシュし、出力をキャプチャします(スクリプトを作成する場合は--log-fileがあります)
  • rsync出力から、削除する必要のあるファイルを決定するか、プッシュしてリストを作成します
  • 多分(プッシュする方法によって異なります):変更のみが必要なファイルからパッケージを作成します
  • プッシュツール(ftp、scpなど)を起動し、リストのファイルで実行します
2
Florenz Kley

できませんscp -r *.php destination

0
hari