Server migration cheat sheet

in Servers


Have history with timestamps

May not be enabled by default on a new server

  • ~/.bash_profile:

    if [ -f ~/.bashrc ]; then
        . ~/.bashrc
    fi
  • ~/.bashrc:

    # Enable timestamp in history
    export HISTTIMEFORMAT="%F %T "
    # Make history append instead of overwrite
    shopt -s histappend
    # Increase history size
    export HISTSIZE=1000000
    export HISTFILESIZE=2000000

    (optional) Automatically cd to a specific folder on every SSH connection

    cd ~/domains

Dump database into file on old server

Before copying over all of your files, you may want to dump the database so that it's copied over as well.

mysqldump -h database.example.com -P 33000 -u db_usr -p db_name > /var/www/dir/db_dump.sql
  • -h: if your database is on a remote server, provide hostname or IP address; else do not provide -h at all
  • -P: if your server port is non-standard; else do not provide -P at all
  • -u: database user
  • -p: prompt the password; if you want you can provide your password explicitly as -pMYPASSWORD, but that may compromise it

Copy folder from old server to new server

Copying files from old server? Might as well include database dump. See above.

Below copies dir from /var/www on old server to /var/www on new server.

  • SCP

    scp -P 2222 -r -p username@oldserver:/var/www/dir /var/www
    • -P: non-standard SSH port
    • -r: recursive, i.e. everything inside given folder including subfolders
    • -p: preserve original timestamps
  • Rsync

    rsync -avh -e 'ssh -p 2222' username@oldserver:/var/www/dir /var/www
    • -v: verbose, print information about progress of the transfer and files being copied
    • -h: human-readable, used with -v, makes file sizes easier to read
    • -a: archive, shorthand for the following:
      • -r: recursive
      • -l: copy symlinks as symlinks, do not dereference
      • -p: preserve permissions (file permission bits)
      • -t: preserve original timestamps.
      • -g: preserve original group ownership
      • -o: preserve original owner
      • -D: preserve device files and special files:
        • --devices – copy device files
        • --specials – copy special files like named pipes and sockets

Restore database on new server

mysql -u db_usr -p db_name < /var/www/dir/db_dump.sql
#vps #cheat-sheet