4

私は最近、大学協会の (小規模な) Web サイトの管理を開始しましたが、どうやら (最後に管理した人によると) Web サイトのファイルにアクセスする方法は SFTP によるものです。Linux Mint/Nautilus を使用しているので問題ありません。ただし、アップロードする前にApache/localhostで変更をテストするためのローカルコピーもあります(実際に機能させることができないことを今のところ無視してください...)。私は Git を使用して変更を追跡しています。

SFTP バージョンと自分のバージョンを比較して、変更されたファイル (基本的には SFTP を介したある種の同期) のみを更新し、バージョン管理をそれに組み込む方法はありますか?

ちなみに、私はこれについての経験がほとんどないので、説明をいただければ幸いです。必ずしも最も洗練されているが構成が恐ろしい方法ではなく、物事を行うための合理的に簡単な方法についても同じことが言えます。

ありがとう!

4

1 に答える 1

3

SSH 経由で Rsync を使用する

SFTP のみのサーバーではなく、真の SSH サーバーを実行している場合は、rsync を使用してローカルの変更をリモートにプッシュできます。例えば:

cd /my/project/directory
rsync -PSauve ssh --exclude=.git * $LOGNAME@example.com:/var/www/

このオプションを使用することも--deleteできますが、保持する必要があるサーバー側にのみ存在するファイルが存在する可能性がある場合は注意してください。

ツリー操作に SFTP を使用する

rsync を使用できない場合は、アップストリーム ファイルをローカル ブランチにコピーし、差分を取り、必要な変更をマージしてから、結果をプッシュすることができます。例えば:

cd /my/project/directory
git checkout -b upstream
sftp -r user@example.com:/var/www/\* .
git add .
git commit -m 'Import current files from upstream.'
git checkout master
git diff upstream
: # merge or modify files as needed
sftp user@example.com:/var/www < <(echo 'put -r *')

SFTP の代わりに SCP を使用する

rsync を使用できない場合は、多くの場合、非対話型操作では SCP が SFTP よりもはるかに優れています。例えば:

scp -r . user@example.com:/var/www/

SCP はよりクリーンなインターフェイスを提供し、シンボリック リンクをサポートします (SFTP はサポートしません) が、ユース ケースには他の制限がある場合があります。特に、コピーする空のディレクトリの名前を表示しない場合があります。それが重要かどうかはあなた次第です。

于 2013-02-05T18:59:00.107 に答える