Transfer files from a specific directory using wget via SSH

If you want to transfer files from one server to another in less than a few minutes or in seconds (1GB file or lower), then use wget via SSH. I’ve been using this since I was born and I would like to share it to everyone who’s not using it yet. You can transfer a zip files or many files in one directory level, or the entire directory and its sub directories.
The image above is a screenshot of how fast I downloaded the files from a remote server to my new server. 4.5GB in 7 minutes! Not bad huh?
Continue reading “Transfer files from a specific directory using wget via SSH”

Zip files via SSH and copy it to another folder or server

If you files and directories in your server via SSH, just type the command below:
zip -r folder

Just replace the folder with the folder name you are targetting or use * if your currently in the folder.

If you want to quickly zip all files and folders individually in your server via SSH, just type the command below:
find . -type f -exec zip '{}.zip' '{}' \;

Replace the dot after “find” to zip the specific folder and all files and folders inside it.

If you want to Tar.gz instead of .ZIP, you can use the command below:
tar -cvzf filename.tar.gz /home/path

Now, to copy the zip file or files in a folder to another folder, use the command below:
cp /home/user1/public_html/*.* /home/user2/public_html

Just replace the user1 and user2 respectively. Or just specify which folder you want to copy your zip file.

If you want to copy all the files inside a folder and the files and folders inside the folder of a folder (sub folder, sub-sub folder, sub-sub-sub folder, and so on), then use the command below:
cp -r /home/user1/public_html/*.* /home/user2/public_html/

If you want to copy the files or folder to another server, use the command below:
scp -r /home/user/public_html/*.* [email protected]:/home/user/public_html/

Just replace the server IP with your IP or domain. You will enter a password after typing the command

Whitelist an IP address in your server via SSH

One day, one of my blog readers can’t access my site. I wondered why and how come she can’t access it but I can. I also asked other readers, and they can. If this happens to you, just like what happened to me, maybe that specific user was blacklisted by your host.

In order for him or her to access your site again, you need to whitelist his or her IP. So the first thing that you should do is ask his IP address, then whitelist it in your server. To white list an IP address, you need to type the following command via SSH:
csf -a IP /etc/init.d/csf restart

Just replace the IP with the actual IP address. For example you want to white list, just type the command
csf -a /etc/init.d/csf restart

To see the white listed IPs you could use the command,
grep IP /etc/csf/csf.allow

I think this is not applicable to all server. I’m using CentOS 5.0 with suPHP as my PHP handler. If your server configuration is different, ask you host first if your not familiar with SSH commands.

Change your PHP handler from mod_php (DSO) to suPHP

Finally, I decided to change my server’s PHP handler to suPHP from mod_php. It’s more secure and I can update my plugins and WordPress files automatically without annoying permission errors.

Here’s what my php config looks like after the update:

php.conf updated to:
# This file was automatically generated by the Cpanel PHP Configuration system
# If you wish to change the way PHP is being handled by Apache on your system,
# use the /usr/local/cpanel/bin/rebuild_phpconf script or the WHM interface.
# Manual edits of this file will be lost when Apache is updated.
# SuPHP configuration for PHP5
LoadModule suphp_module modules/
suPHP_Engine on
AddType application/x-httpd-php5 .php5 .php4 .php .php3 .php2 .phtml

    suPHP_AddHandler application/x-httpd-php5

# End of autogenerated PHP configuration.
Updating user configurable PHP settings.
[info] recursion depth is set to: 2
Restarting Apache

Now, I can update WordPress hassle free!

To change your php handler, you should have WHM root access. This is the only way I know. I think you can change it via SSH, but I haven’t tried it yet.

Once you’re logged in as root, just go to Service Configuration > Configure PHP and SuExec > Alter Configuration > PHP 5 Handler > Select suPHP.

Once you’ve selected suPHP, just click “Save New Configuration”.

That’s it!

CHMOD folders, sub-folders, sub-sub-folders, and so on

If you recently changed your PHP handler to suPHP from mod_php or DSO, then you need to CHMOD all your folders, its sub-folders, sub-sub-folders, and so on to 744 to avoid any internal server errors, specifically internal server 500 errors.

And also, you need to CHMOD all of your files to 644.

In order to do this automatically, login as root in your server and go to your home directory, then enter this command via SSH.

For folders:
find {path to the folder} -type d -exec chmod 755 {} \;

For files:
find {path to the folder} -type f -exec chmod 644 {} \;

And that’s it! It will change the permissions of all your files and folders under your home directory automatically! It’s like magic!

If the above method doesn’t work for you, try the xargs method.

For folders:
find . -type d -print0 | xargs -0 chmod 0755

For files:
find . -type f -print0 | xargs -0 chmod 0644