if [ -z "$1" ]; then
echo "Usage: `basename $0` hostname"
tar zhcf - . | ssh $1 "tar zpvxf -"
Call it movein.sh, and stick it in your
~/bin directory. Now create a
~/.skel directory, and make symlinks to all of
the files you'd like to copy to remote servers:
rob@caligula:~/.skel$ ls -al
drwxr-xr-x 6 rob staff 204 Sep 9 20:52 .
drwxr-xr-x 37 rob staff 1258 Sep 9 20:57 ..
lrwxr-xr-x 1 rob staff 11 Sep 9 20:52 .bash_login -> ../.bash_login
lrwxr-xr-x 1 rob staff 11 Sep 9 20:52 .bashrc -> ../.bashrc
lrwxr-xr-x 1 rob staff 11 Sep 9 20:52 .my.cnf -> ../.my.cnf
lrwxr-xr-x 1 rob staff 11 Sep 9 20:52 .pinerc -> ../.pinerc
drwxr-xr-x 3 rob staff 102 Sep 9 20:51 .ssh
lrwxr-xr-x 1 rob staff 9 Sep 9 20:52 .vimrc -> ../.vimrc
lrwxr-xr-x 1 rob staff 6 Sep 9 21:27 bin -> ../bin
Note that ~/.skel/.ssh is a special case:
it's a directory, not a symlink. DO NOT SYMLINK YOUR
~/.ssh TO ~/.skel! The last
thing you need is to copy your private
ssh key all over the place;
that's what the ssh-agent is
for (see ). Instead, make a directory called
~/.skel/.ssh and make a symlink like this:
rob@caligula:~/.skel$ cd .ssh
rob@caligula:~/.skel/.ssh$ ls -al
drwxr-xr-x 3 rob staff 102 Sep 9 20:51 .
drwxr-xr-x 6 rob staff 204 Sep 9 20:52 ..
lrwxr-xr-x 1 rob staff 26 Sep 9 20:51 authorized_keys2 ->
This is a link called authorized_keys2, and it
points to your live public key. You are using
public key ssh connections, right? If not,
Now when this script runs, it will copy the contents of
~/.skel to the host you specify on the command
line, straight into your home directory. The h
flag to tar means "copy these symlinks as if they
were files, not symlinks," so you end up with a copy
of the contents of each link on the remote end. If you make changes
to your local copy, just run the script again, and it will overwrite
everything on the remote end.
Only include the .ssh directory as mentioned
above if you'd like to be able to log into the
remote host automatically, without a password. As long as your local
machine's keys are kept secure, there is no inherent
security risk in leaving extra authorized_keys2
files lying around. That's what public key
cyptography is all about.