
LFTPでハマッた!パーミッションや日付が引き継げない謎の解明
どうも、もはや意地になってWindows10を入れないタダオ虫です。
近々、サーバーを引っ越す事に。そこでLFTPというサーバーアプリケーションで思いっきりつまづき、解決したお話。
今回はちょっと専門的なサーバー関係のお話しです。
専用サーバー ⇒ 共用サーバーへのお引越し。
共用サーバーはSSHが使えないのでSCPやrsync が使えない。
パーミッション、ユーザー、アップロード時刻などを丸まる引継ぎつつ引越したいけど、ファイル数が数十万個もある。
これは参った。
そこで思いついたのが『LFTP』高機能なFTPアプリケーションです。
引越し元、引越し先のどちらかがSSHを使えれば問題なく、データを送信または受信する事が可能。
パーミッション、ユーザー、時刻などファイルに付随する情報も一緒に引っ越す事が可能!
こんなパーフェクトなファイル転送アプリがあったでしょうか?作ったのはロシア人で、めっちゃ有名なFTPソフトみたいです。
Contents
早速テストしてみた
↑これが送信元ファイル。日付はかなり古い。
これを新しい共用サーバーに送信してみると・・・・

↑ややっ!日付が更新されてしまっている!!!
試しにパーミッションを666に変更して送信してみてもデフォルトに戻されてしまいます。
全然駄目ジャン!!
と言う事で泣きべそかきながら半日くらいネットで情報を探しまくった結果、理由が判明です!!
LFTPのバージョンが古いのが原因
でした。
# lftp –version
LFTP | Version 3.5.1 | Copyright (c) 1996-2006 Alexander V. Lukyanov
これがウチのLFTPバージョン。
バージョン3.5で駄目でした。
早速、yumでアップデートしていく!
# yum update lftp
Loaded plugins: fastestmirror
Determining fastest mirrors
YumRepo Error: All mirror URLs are not using ftp, http[s] or file.
Eg. Invalid release/repo/arch combination/
removing mirrorlist with no valid mirrors: //var/cache/yum/base/mirrorlist.txt
Error: Cannot find a valid baseurl for repo: base
なんと、エラーが出た!
CentOSが古いためyumが機能しないようだ。
古いバージョンが残されているyum参照URLを指定しないといけないようです。
https://www.softel.co.jp/blogs/tech/archives/5634
ここに書いてありました!ありがたや~
# vi /etc/yum.repos.d/CentOS-Base.repo
これにyum参照URLが書いてある。
↓の赤い部分を修正するのですが、丸っと入れ替えで問題ないです。
# CentOS-Base.repo
#
# This file uses a new mirrorlist system developed by Lance Davis for CentOS.
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client. You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the
# remarked out baseurl= line instead.
#
#[base]
name=CentOS-$releasever – Base
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
baseurl=http://vault.centos.org/5.11/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5#released updates
[updates]
name=CentOS-$releasever – Updates
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
baseurl=http://vault.centos.org/5.11/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5#packages used/produced in the build but not released
[addons]
name=CentOS-$releasever – Addons
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=addons
#baseurl=http://mirror.centos.org/centos/$releasever/addons/$basearch/
baseurl=http://vault.centos.org/5.11/addons/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5#additional packages that may be useful
[extras]
name=CentOS-$releasever – Extras
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
baseurl=http://vault.centos.org/5.11/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever – Plus
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus
#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
baseurl=http://vault.centos.org/5.11/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5#contrib – packages by Centos Users
[contrib]
name=CentOS-$releasever – Contrib
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib
#baseurl=http://mirror.centos.org/centos/$releasever/contrib/$basearch/
baseurl=http://vault.centos.org/5.11/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5
うちのCentOSは5.3でしたが参照フォルダは5.11で行けました。たぶん大まかなバージョン指定でOKじゃないでしょうか?違っていたらコメントでご指摘頂けると助かります。
OSバージョンチェック
#cat /etc/redhat-release
再度yumでLFTPをアップデートして行く!
# yum update lftp
~省略~
Updated: lftp.i386 0:3.7.11-8.el5
Complete!
コンプリート!って言ってるけど念のためバージョン確認してみます。
# lftp –version
LFTP | Version 3.7.11 | Copyright (c) 1996-2009 Alexander V. Lukyanov
無事に3.7にバージョンアップ完了!!
パーミッションも引き継げました!
試しにLFTPを使ってアップロード
