Common SSH commands
This is a list of commonly used SSH commands that I used to keep in a file on my computer, while managing the server I open this file often so I am thinking others might need this too. For more advanced commands like compressing and decompressing multi-part archives, I will create separate articles.
To delete an entire directory and its files
rm -r -f YourDirectory
Obviously you should use extreme caution and do not remove files you need.
Get the file size in MB
du -m photos.zip
Get the complete directory size
du -sh .
List files with size and details next to them
ls -alh
Count total files in a directory
ls -1 targetdir | wc -l
Replace "targetdir" with a dot to count files or folders in current directory.
Search for a string in all files
grep -r -l "whatever" *
"whatever" is the string to look for, and * tells it to look in all files in current directory, or specify a directory like this: grep -r -l "whatever" /var
Change the file owner and group of files
chown -R adrian:psacln *
Where "adrian" is the user of the files and psacln is the group. If you don't know what name and group to use, then do a "sh -alh" and look at your other file's owner and group name.
When not able to read/write files, bad file owner might be the cause rather than permission code (0777, 0755, etc)
Change permission code of a file
chmod 0777 my_file.txt
Changes the file permission codes, 0777 makes a file writable by all, other permission codes are 0755, etc. If you have trouble reading/writing a file make sure that file owner and group is the same with yout other "normal" files that can be read/written by you.
Creating and extracting zip files
I recommend using zip files when you need to move sites to another server, zipping the files works well if site is under 1GB, and transfering one large file will be much faster than using FTP for each file in site. For sites/backups over 1GB I you should use multi-volume .tar archives that need few more commands.
To create a zip of current directory you are in (note the "*"), use this command, note that the ".htaccess" tells it to also load .htaccess file from current directory, otherwise it might be skipped:
zip -r documents.zip * .htaccess
To test the created zip file:
zip -T documents.zip
To unpack the zip file:
unzip documents.zip
Export and import large database
These commands will allow you to quickly move databases between servers, or create local backups of your database
Export a database to an .sql file (backup.sql):
mysqldump --add-drop-table -h site.com -u username -p dbname > backup.sql
Where you will need to replace site.com with your domain name ("localhost" also works), also replace database username and database name; iIt will ASK for password AFTER entering the command !!!
Then to import this file into a database:
mysql -h site.com -u username -p dbname < backup.sql
Tip: you can move files between servers with wget command:
wget http://site.com/backup_34234.sql
but make sure you do not leave db your files online for everyone to read
Get the CPU details of your server
This would probably be useful for dedicated servers and virtual dedicated servers, it tells you processor model, cache size, speed, etc
cat /proc/cpuinfo