scp
を使ってコピーすれば問題ない。しかし、IP到達性が確保されていない場合はどうするか?ここでは、base64
コマンドを使う方法を紹介する。IP到達性が確保されていない場合とは例えば、
- Xen環境でDomUとDom0間がXenコンソールでしか繋がっていない
- シリアルポートからTTY接続している
上の様な場合でも、標準出力はローカルマシンのコンソールに出力されるので、ここからコピーすればよいのだが、単にファイルを
cat
すると、バイナリファイルは正常にコピーできないし、テキストファイルであっても、端末エミュレータによってはタブが空白に変換されたり、行末の空白が無視されたりする。これを避けるために、TTYで正常に出力されるキャラクタ集合でエンコードする。その昔は、
uuencode
を使ったが、最近のLinuxでは、base64
コマンドが使いやすい。まず、コピー元のマシンで、以下の様にエンコードする。
[root@dc1 ~]# base64 /usr/share/doc/yum-3.2.8/READMEこの出力結果をデコードするには、
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpZdW0gLSBhbiBhdXRvbWF0aWMg
dXBkYXRlciBhbmQgaW5zdGFsbGVyIGZvciBycG0tYmFzZWQgc3lzdGVtcwotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpJbmNsdWRlZCBwcm9ncmFtczoKL3Vzci9iaW4veXVt
<<略>>
dHRwOi8vbGludXguZHVrZS5lZHUveXVtLwp3aWtpOiBodHRwOi8vd2lraS5saW51eC5kdWtlLmVk
dS9ZdW0K
[root@dc1 ~]#
base64
コマンドに-di
オプションを付けて実行する。以下の実行例では、ローカルマシン上で実行しているが、実際には、コンソール間でエンコードされたデータをコピー&ペーストする。[root@dc1 ~]# base64 /usr/share/doc/yum-3.2.8/README | base64 -diなお、
-------------------------------------
Yum - an automatic updater and installer for rpm-based systems
-------------------------------------
Included programs:
/usr/bin/yum Main program
<<略>>
wiki: http://wiki.linux.duke.edu/Yum
[root@dc1 ~]#
base64
コマンドが無い場合は、openssl
コマンドで代用する。[root@dc1 ~]# openssl base64 < /usr/share/doc/yum-3.2.8/README | openssl base64 -d
-------------------------------------
Yum - an automatic updater and installer for rpm-based systems
<<略>>