んたのブログ

週末になると出没します。

旧サーバ→新サーバへのデータ引っ越し

sambaが稼働したところで、じゃあ次はデータの引っ越しですね!
ということで今回はssh&rsyncで旧サーバからデータをコピーする顛末です。
 
パスワード無しでログインできるPublic Keyを新サーバのAuthorized_Keyに登録しただけですけども。
 
基本的な流れはこちらを参考にしてます。
 
  1. 新サーバ側で秘密鍵を作成
$ ssh-keygen -t rsa -N '' -f ~/.ssh/rsync_rsa
これで .sshの下に rsync_rsarsync_rsa.pub を作成されます。-N '' オプションをつけているのでパスワードは空になってます。
  1. 旧サーバ側の authorized_keys に rsync_rsa.pub の内容を追記
今回はsambaを使って送信側の authorized_keys をコピーしました。
  1. 新サーバから旧サーバへパスワード無しでssh接続できることを確認。
$ ssh -i .ssh/rsync_rsa <ユーザ名>@<受信側のIP or ホスト名>
 
そしたらrsyncでコピーできるかテスト。
 
  1. rsync -azv -e 'ssh -i .ssh/rsync_rsa' <ユーザ名>@<受信側のIP or ホスト名>:/<移行したいディレクトリ> <移行先のディレクトリ>
 
で、無事データがコピーできました。なので後はコピー元とコピー先のディレクトリを指定してひたすら待って終了。
 
そしたら次はlsyncd。ここから先は以前やったメモを頼りに。
 
$ sudo apt install lsyncd
$ sudo mkdir /etc/lsyncd/
$ sudo vi /etc/lsyncd/lsyncd.conf.lua
settings {
    logfile = "/var/log/lsyncd.log",
    statusFile = "/tmp/lsyncd.stat",
    statusInterval = 1,
    insist         = 1,
}
 
sync{
  default.rsync,
  source = "<元ディレクトリ>,
  target = "ユーザ名@<送信先のIP or ホスト名>:<送信先ディレクトリ>,
  delete = "running",
  rsync = {
    archive = true,
    update = true,
    compress = true,
    rsh = "/usr/bin/ssh -i /home/<ユーザ名>/.ssh/rsync_rsa -o StrictHostKeyChecking=no"
  }
}
 
そして忘れずに監視上限数を確認。
$ cat /proc/sys/fs/inotify/max_user_watches
122684
 
最初から上限数が多めに設定されていたのでそのまんまです。
これで新サーバを再起動したら無事にlsyncdが起動しました。
 
あと忘れちゃいけないログローテ。
新サーバには /etc/logrotate.d 配下にsyslog用の設定ファイルがなかったので設定を作りました。
 
$ cat lsyncd
/var/log/lsyncd.log {
weekly
rotate 4
compress
delaycompress
missingok
notifempty
create 644 root root
}
 
一週間単位で4世代あればいいだろ。そしたら設定の確認。
 
$ sudo logrotate -dv /etc/logrotate.conf
〜〜
rotating pattern: /var/log/lsyncd.log  weekly (4 rotations)
empty log files are not rotated, old logs are removed
considering log /var/log/lsyncd.log
Creating new state
  Now: 2023-11-26 21:02
  Last rotated at 2023-11-26 21:00
  log does not need rotating (log has already been rotated)
 
エラーになりませんでした。よしよし。
 
これでsambaサーバの移行は終わりかな。rsyncとかlsyncdとか経験済みだったので割とスムーズに行けました。1週間位様子を見て問題なければ旧サーバは停止しよう。