Restoring a backup from a ZIP file – like the ones generated by our downloadable backup feature – can sometimes be a lengthy process. If you unzip a ZIP file locally on your computer before uploading the backup with SFTP, you’ll likely run into a bottleneck because SFTP can only transfer a limited number of files concurrently.

Fortunately, there is a faster method that can reduce the backup restore time significantly.

Instead of unzipping a ZIP file locally and uploading the unzipped folder, it’s often faster to upload a ZIP file to the server before unzipping it.

In this post, we’ll explain how to unzip a file uploaded to a server using SSH. For our example, we will unzip a backup file on a Kinsta server, but the same technique can be used to unzip any ZIP file on any Linux server.

Step 1 – Log In to Your Server with SSH

The first step is to log in to your server with SSH. To do this, you’ll need an SSH client like the built-in Terminal app in macOS and Linux or the free PuTTY client on Windows, and the SSH login details – IP address, username, password (optional), and port.

Password vs Public Key Authentication

You may be wondering why the password is optional. When logging in to your server with SSH, there are two authentication methods – password and public key authentication. The password authentication method uses a plain text password.

Public key authentication is widely regarded as a more secure alternative to password authentication. The public key authentication method requires you to generate a key pair – public key and private key. The public key is uploaded to the server, while the private key is stored locally on your computer. During the SSH login process, the cryptographic link between the two keys is verified to authenticate the user.

Kinsta users can upload SSH public keys in the MyKinsta dashboard. If you are using another server provider, we recommend taking a look at the relevant documentation on how to upload SSH keys to the server.

Now that we’ve covered the differences between password and public key authentication, let’s move on to the SSH login process. For Kinsta users, SSH login details along with the full SSH terminal command are provided in the MyKinsta dashboard.

SSH terminal command in MyKinsta.
SSH terminal command in MyKinsta.

If you are using another web host or server provider, the SSH details can typically be found in your dashboard as well.

After you have found the login details, you can log in with the following SSH command.

ssh username@ip-address -p port

With the example login details below, the SSH terminal command would be ssh [email protected] -p 24910. If you are not using public key authentication, you will also be prompted for the SSH password after executing the login command.

  • IP Address: 146.148.59.197
  • Username: kinstasite
  • Port: 24910

After a successful SSH login, you should see something like this in your Terminal window.

SSH terminal window.
SSH terminal window.

Step 2 – Install the Unzip Package (Optional)

In some Linux distributions, the unzip package is not installed by default. Kinsta users do not have to worry about installing the unzip package because it is automatically installed on all our site containers. If you are managing a server that does not have the unzip package installed, you can use the following command to install it – note that sudo level permissions are required.

Ubuntu and Debian

`sudo apt install unzip`

CentOS and Fedora

`sudo yum install unzip`

Step 3 – Unzip the ZIP File Using Terminal

The next step is to navigate to the ZIP file and unzip it. To navigate to the correct folder, we can use the cd command, as shown below.

cd directory

We uploaded our backup.zip file to the ~/private directory, so we’ll use the command below.

cd ~/private

Notice how our Terminal prompt shows the ~/private directory now.

Navigate to the directory containing your ZIP file.
Navigate to the directory containing your ZIP file.

We can use the ls command to list the files and folders in the current directory. In the screenshot below, you can see the backup.zip file in our ~/private directory.

List files in Terminal.
List files in Terminal.

There are two ways to unzip a ZIP file. You can either unzip it to the current directory or a different directory.

To unzip the file to the current directory, use the command below.

unzip your-file.zip

To unzip the file to a different directory, use this command instead.

unzip your-file.zip -d directory

For our backup.zip file, we want to unzip it to our ~/public folder, which can be done with the command below.

unzip backup.zip -d ~/public

After running the unzip command, you should see a series of lines that start with “inflating”. This indicates that the unzip process was started successfully.

Unzip files in Terminal.
Unzip files in Terminal.

After the unzip process is finished, navigate to the destination directory with the cd command, and list out the files with the ls command to verify the unzipped files are in the right place.

Verify unzipped files.
Verify unzipped files.

If you would like to remove the original ZIP file after unzipping it, you can use the rm command like this.

rm /path/to/your-file.zip

In general, if you are dealing with a ZIP file that is over 50 MB in size, unzipping it on the server instead of locally on your computer will usually be faster. But there’s more to unzipping ZIP files as using SSH and Terminal is useful for a number of use cases beyond restoring backups.

Summary

Being able to unzip a ZIP file in Terminal using SSH can speed up your workflow dramatically – especially if you are uploading a large number of files in bulk. With the SSH commands listed in this post, you’ll be able to quickly restore backups and move content without waiting for long SFTP uploads.