How to Unzip a ZIP File in Terminal Using SSH (Works on Linux Servers)


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 [email protected] -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:
  • 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 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 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.


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

unzip -d directory

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

unzip -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/

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.


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.

Save time, costs and maximize site performance with:

  • Instant help from WordPress hosting experts, 24/7.
  • Cloudflare Enterprise integration.
  • Global audience reach with 34 data centers worldwide.
  • Optimization with our built-in Application Performance Monitoring.

All of that and much more, in one plan with no long-term contracts, assisted migrations, and a 30-day-money-back-guarantee. Check out our plans or talk to sales to find the plan that’s right for you.


Jaspreet Singh Ghuman

Jaspreet Singh Ghuman

Passionate Professional Blogger, Freelancer, WordPress Enthusiast, Digital Marketer, Web Developer, Server Operator, Networking Expert. Empowering online presence with diverse skills.

jassweb logo

Jassweb always keeps its services up-to-date with the latest trends in the market, providing its customers all over the world with high-end and easily extensible internet, intranet, and extranet products.


Jassweb, Rai Chak, Punjab, India. 143518
Item added to cart.
0 items - 0.00