Moving files to a Linux box
Moving files to (and from) a GNU/Linux box is trivial for those well-seasoned in the use of the commandline. For Mac or windows users who need to make use of a Linux box (read my article on Clustercomputing with Torque) this may be the first problem they encounter. Easily overcome, though tough if you don’t know how it works.
First: you’ll need an account on the machine you want to copy your files to (“destination”). Obviously, you may also need an account on the machine where the files come from (“source”).
wget
Probably the easiest way is using wget to perform an HTTP GET operation (which is what your webbrowser does when you type the url). On the Linux box (“destination”), do:
wget http://mymachine.mydomain.edu/stuff/code.tar.gz
And the file code.tar.gz will be downloaded in the current directory. This way you can, for instance, get the omnetpp distro from omnetpp.org:
wget http://www.omnetpp.org/omnetpp/doc_download/2217-omnet-41-source--ide-tgz
sftp
Point an sftp-capable browser to sftp://destination:/home/myhomedir on the “source” and you can simply drag’n’drop your files. This requires a shell-account on the destination machine.
scp
Using the Secure Shell server, you can securely copy files:
scp myfiles.tar.gz username@destination:/home/myhomedir
To get your file from here to the destination.
scp username@destination:/home/myhomedir/myfiles.tar.gz .
To get your file from the destination to your local computer.
rsync
Where scp simply copies (and overwrites, so beware!), rsync will only copy the difference which can be a lot faster (and generate less traffic). You can push from “source” to “destination” or pull from “destination” to “source”, and there are a gazillion options.
FUSE: sshmount
You can mount a directory on destination locally on your source (or vice-versa if you have appropriate privileges).
ftp
If the destination runs an ftp server, you can upload it. Obviously, if the source runs an ftp server you can download it.
curlftp
If the destination runs an ftp server, you can mount it using curlftp.
Samba
If the destination runs a CIFS/SMB server (with appropriately configured ‘upload’ directory) you can simply point your browser to smb://destination (or \\destination in windows explorer, OS X will automatically detect it and show it in the ‘places’).
NFS
Files on an NFS server are easily accessible by mounting the NFS server. You can then treat it as a local directory. NFS needs to explicitly ‘export’ a resource to a target machine, so this is not an option if you have no control over the other machine.
Git, SVN, etc.
Of course, you can also use the wide variety of Concurrent Versioning Systems out there.
Conluding remarks
If anyone has any alternatives or comments, I would be glad to hear of them and I’ll include them in this list. Needless to say, GNU/Linux gives you a lot of options – if one doesn’t work, simply use the other 🙂