I need to send a colleague a relatively large application (>5GB), and was thinking of how I could go about sending it. Cloud-based services such as DropBox won't work because the file is much bigger than the storage, Gmail won't allow me to send files larger than 25Mb, and using a regular USB Flash Drive would take much too long.

What I want to know if it is possible to transfer the files between the two computers without needing to be on the same network (For reference both of us are using MacBook Pro's, and we're a couple of states apart). I've tried using telnet, ssh, and ftp, but it seems that all of them require the two computers to be part of the same local area network (I was trying to have the other end connect to my computer by giving them the IP address of my computer). I was wondering if it were possible to somehow make my MacBook act as a server, have the other end connect, and then transfer the files. Is something like this feasible? Thank you in advance!

  • You need to get your external IP address and make sure that port forwarding is turned on for whichever service you use.
    – andrewmh20
    Mar 30, 2016 at 5:53
  • Alright, so for port forwarding, I looked up my external IP address (which I found on google as a "Public IP address", and I'm simply assuming finding it this easily is standard procedure) and got the numbers for certain open ports (Which I found by putting the Public IP address on Network Utility", how would I go about sending the file to the other side? Thank you for steering me in the right direction, btw. Mar 30, 2016 at 6:26
  • Can I assume both users are assigned their IP address dynamically from their ISP? Can I also assume you both are using NAT? Also, can I assume you both only have IPv4 and no IPv6 addressing? Will this transfer be a one time thing or something that happens frequently? None of this information is in your question and one really should know this before posting an answer. Mar 30, 2016 at 8:42
  • If I make some assumptions, I could post an answer like the following. On each end, there is a router and at least a Mac. Edit each router's settings so IP address of the Mac on the same LAN is in the router's DMZ. This is the IP address shown under System Preferences. This eliminates the need to setup up port forwarding. You then communicate between the Mac's using the WAN address dynamically assigned to the routers. In other words, the address shown when accessing a site like http://whatismyipaddress.com/. Mar 30, 2016 at 9:03
  • Use BitTorrent Sync. Getsync.com
    – Mirco
    Apr 1, 2016 at 11:46

2 Answers 2


The classic way of copying files between two *NIX boxes (Mac, BSD or some Linux) is via the scp command.

This method requires knowledge of the public IP address of the target device, or an IP address within the same VPN. A tool which can help accessing computers over the internet is a Dynamic DNS service, like No-IP or DynDNS. No-IP offers a free service which is more than adequate for your purposes (used it myself). This gives your machine a publicly accessible hostname.

Once you've established the target device's IP, you need to fire up your Terminal, and call the scp command. For the sake of simplicity we'll assume that the target IP is, and that you've already set up SSH keys.

Your scp command should look something like this:

>> scp /source/file/here [email protected]:/target/file/here

or when using a hostname:

>> scp /source/file/here [email protected]:/target/file/here

If you check scp man pages, it tells you that the first parameter (the source file) should also be defined with a user and a machine. When using a local file, the necessary details are added for you, so you only have to provide the file path.

Here is a link to the scp man page: http://linux.die.net/man/1/scp

And here's a link to a tutorial: https://kb.iu.edu/d/agye

Bonus: if you need to sync a larger number of files more often, maybe something like BitTorrent Sync could be of interest to you. I haven't really tried it myself with larger files tho.


The inherent problem with using command line tools like scp or sftp is that even after you get your external IP address, you need to configure your firewall/router to allow that traffic to get to your computer. But do you control (own) that firewall/router? If you don't, then how do you make the connection?

Have you tried Skype?

I once used Skype to transfer an ISO that was about 2GB in size. I was in a similar situation as you but while I controlled my router, my friend did not control the one he was behind and the owner was unwilling to help out. Walking him through the process of entering commands on Terminal was proving to be difficult so I had to find something else. Using Skype, I was able to transfer the ISO.

I just went on their site and checked....

enter image description here

Unfortunately, I can't test right now as I don't have someone available (with time) to test out sending a large file.

Another option is TeamViewer.

With it, you can not only remote control another computer over the Internet, you can transfer files. A quick look on their website reveals:

enter image description here

They support virtually every platform - Mac, Windows, Linux, even Blackberry (yeah, BB!). It's also Free for personal use. They even have a "portable version" that doesn't get installed. You can just copy the executable to a USB stick and use it on any computer without it modifying any files.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .