File Transfer Protocol (FTP), and Secure File Transfer Protocol (SFTP) are two of the most widely used protocols for transferring files between a local device and a remote server. They are frequently used by web developers to push changes to their servers, and as such, there are a lot of FTP clients that are available. However, there is also a rather powerful tool built into a Mac that can allow users to use FTP, and SFTP protocols to interface with remote servers.
In this article I will be detailing how you can use the Terminal (Mac) as an FTP or SFTP client, to do a variety of tasks on remote servers. For the purpose of illustration, I’m using a test server with Linux, Apache, MySQL and PHP installed on it, with SSH access enabled. I will be telling you how you can accomplish basic FTP/SFTP tasks such as uploading/downloading files, renaming, moving, deleting etc. using the macOS’ Terminal, instead of a third party FTP client.
Note: To use SFTP, you will need to have SSH access enabled on your server. If you don’t have SSH access, you can contact your hosting provider, or you can use FTP. But keep in mind that FTP is generally not considered secure, so be careful.
Logging into the Server
Logging into the remote server is pretty straightforward. You will need a FTP/SFTP username and password to log into the server. FTP might allow for anonymous log-ins, but it’s better to authenticate using a username and password.
Using FTP
The command to log-in into a remote server using FTP, is:
ftp server_ip
You will then be prompted for your username, type it in, and hit Enter. Next, the Terminal will ask you for your password, key it in, hit Enter, and you will be logged in.
Using SFTP
The command to log-in to a remote server using SFTP, is:
sftp username@server_ip
You will then be prompted for the password. Key it in, and hit Enter to log in.
1. Uploading and Downloading Files
One of the basic functions of an FTP/SFTP client is the ability to upload files from the local host to the remote server, and to download files off of the remote server.
Using FTP or SFTP
- Upload Files
The command to upload files to a remote server, is:
put path_to_local_file remote_file
For example, if I wanted to upload a file called index.txt, the command will become:
put /Users/akshaygangwar/index.txt index.txt
This command will put the file called “index.html” from my home directory, into the working directory in the remote server.
Note: To find out your working directory, you can use the command “pwd”
- Download Files
The command to download files off of a remote server, is:
get path_to_remote_file local_file
For example, if I wanted to download a file called newfile.txt, the command will become:
get newfile.txt newfile.txt
This command will download the file called “newfile.txt” from the working directory on the remote server into the working directory on my Mac.
2. Creating a New Folder
Creating folders (directories) on a remote server is another important task that is accomplished by FTP clients.
Using FTP or SFTP
Creating a new folder using the Terminal is easy. It’s the same command in both FTP and SFTP protocols:
mkdir directory_name
For example, if I wanted to create a folder by the name of “Beebom”, the command will become:
mkdir Beebom
This will create a folder named “Beebom”, in the working directory on the remote server.
3. Renaming Files on the Server
Renaming files on the remote server can be accomplished easily by using the Terminal as a client.
Using FTP or SFTP
The command to rename files on a remote server using the Terminal as an FTP/SFTP client can be done with the following command:
rename old_name new_name
For example, if I wanted to change the name of “newfile.txt” to “mainlog.txt”, the command will become:
rename newfile.txt mainlog.txt
This will rename the file “newfile.txt” to “mainlog.txt”
4. Deleting Files
The Terminal can also let you delete files off the remote server. The commands in this case are different for both FTP and SFTP, and I am stating both of them separately.
Using FTP
The command to delete files off a remote server using FTP, is:
delete file_name
For example, if I wanted to delete the file called “beebomold.txt”, the command will become:
delete beebomold.txt
This will delete the file “beebomold.txt” off of the remote server.
Using SFTP
The command to delete files off a remote server using SFTP, is:
rm file_name
For example, if I wanted to delete the file called “beebomold.txt” using SFTP, the command will be:
rm beebomold.txt
This will delete the file “beebomold.txt” from the remote server.
5. Moving Files within the Remote Server
Using the Terminal as an FTP client can also allow you to move files within the remote server itself, exactly the way you would do it in a third party FTP client.
Using FTP or SFTP
The command to move files within the server in both FTP and SFTP is:
rename file_name path_to_new_file/file_name
For example, if I wanted to move a file called “testresults.txt” from the “test” directory to the “results” directory, the command will become:
rename testresults.txt results/testresults.txt
This will move the file “testresults.txt” to the sub-folder “results”.
6. Check “Last Modified” Date
Checking the “Last Modified” date for a file or a folder is useful if you need to know what files and folders were updated when. You can achieve this on the Terminal as well.
Using FTP or SFTP
The command to check the last modified date for a file is:
ls -l file_name
This command displays some information in a tabular form. The column with the date and time values corresponds to the “Last Modified” value.
For example, if I wanted to check the date that “testresults.txt” was last modified, the command will be:
ls -l testresults.txt
7. Check and Modify Permissions
Having files set to the proper permissions is very important. Sometimes, wrong permissions can lead to your web app not even loading.
Using FTP or SFTP
- Checking Permissions
Checking and modifying permissions using the Terminal as a client is very straightforward, the command is:
ls -l file_name
This command displays some information in a tabular form. The first column displays the permissions on the file.
For example, if I wanted to check the permissions on the file “testresults.txt”, I will use the command as:
ls -l testresults.txt
- Modifying Permissions
If you see a file that has incorrect permissions, or if you just want to play around with the permissions, you can use the Terminal to modify the permissions of the file. The command is:
chmod permissions_value file_name
For example, if I wanted to give full read, write and execution permissions to the file “testresults.txt”, the command will become
chmod 777 testresults.txt
This command will give read, write and execute permissions to the file “testresults.txt”
8. Create New Files
Creating new files on the server is a task that is not easily done on the Terminal. However, that doesn’t mean it’s not possible. The issue with creating new files is that you have to have a copy of the file on your laptop before you can upload it to the server.
Using FTP or SFTP
The commands to create a file on the remote server, are:
!touch file_name
put file_name file_name
For example, if I want to create a file “newtest.txt” on the server, the commands will become:
!touch newtest.txt
put newtest.txt newtest.txt
This will create a new file called “newtest.txt” and upload it to the server.
9. Edit Existing Files
Editing existing files is also an important feature. You can edit a file in the Terminal itself, by using programs such as nano, emacs etc., which are already built-in to the Terminal. Nano is simpler to understand, and I will be using it in this example.
Using FTP or SFTP
The commands to edit existing files on the remote server, are:
get file_name file_name
!nano file_name
put file_name file_name
For example, if I want to edit the file “newtest.txt”, the commands will become:
get newtest.txt newtest.txt
!nano newtest.txt
put newtest.txt newtest.txt
These commands will edit the file “newtest.txt” and upload it back to the server.
10. Creating Duplicate Copies of Files
When you are editing files in the remote server, it is better to have a copy of the original file, just in case you mess something up.
Using FTP or SFTP
To create a duplicate copy of a file on the remote server, the commands are:
get file_name file_name
!mv file_name new_file_name
put new_file_name new_file_name
For example, if I want to create a duplicate copy “newtest_copy.txt” of “newtest.txt”, the commands will become:
get newtest.txt newtest.txt
!mv newtest.txt newtest_copy.txt
put newtest_copy.txt newtest_copy.txt
SEE ALSO: 8 Useful FFmpeg Commands You Should Use on Your Mac
Harness the Power of the Mac Terminal with FTP or SFTP
Now that you know how you can use the Terminal as an FTP or SFTP client, you can use it for FTPing or SFTPing into your development server, without having to worry about third-party applications installing bloatware, or not securing your traffic. If you have any issues with using FTP or SFTP from your Terminal, or if you think we missed something out, let us know in the comments section below.