Quantcast
Channel: mattintosh note
Viewing all articles
Browse latest Browse all 892

リモートでsudoしてrsyncしたい

$
0
0

EC2 インスタンス上のデータをバックアップするのに root しか読み取り権限がないファイルやディレクトリをどうコピーするか、という問題にあたった。AmazonLinuxでは root のログインを禁止しているため何らかの方法でユーザをスイッチしなくてはならない。んで、rsyncのマニュアルを読み返して考えたところ --rsync-pathオプションで rsyncsudoで実行すれば良いことに気づいた。

なお、このサーバは踏み台を利用しており、ホストや秘密鍵の設定などは ssh/configに書いてあるためそれを -e "ssh -Fssh/config"で呼び出している。--compressは無くてもいいが EC2 インスタンスからグローバルへの転送は料金がかかるので圧縮しておいた方がコストが減らせる。

rsync -av--progress--compress\--no-o--no-g--no-p\--copy-unsafe-links\-e"ssh -Fssh/config"\--rsync-path="sudo rsync"\
    remote:/path/to/source/ /path/to/destination/

--no-o--no-g--no-pはそれぞれ --no-owner--no-group--no-permsの省略形。-aオプションは -rlptgoDの省略形であるが、このうち ogpを打ち消す(-aを使わずに -rltDでもいいだろう)。打ち消している理由はバックアップ先のメディアが FAT32でそもそもパーミッションという概念が無く、「パーミッション変更できまへん」エラーが大量に出るから。本来であれば EXT4や XFS などの Linuxファイルシステムが望ましい(今回はクライアントからの要望で USB メモリ標準のフォーマットを使用した)。


Viewing all articles
Browse latest Browse all 892

Trending Articles