Encrypting Files and folder through terminal
You can encrypt and decrypt files with gpg
To encrypt a file
gpg -c file.to.encrypt
To decrypt a file
gpg file.to.encrypt.gpg
But gpg will not do entire directories. For entire directories you have several options, ecryptfs is popular.
# Install if ecryptfs-utils if needed
sudo apt-get install ecryptfs-utils
# Make an encrypted directory
ecryptfs-setup-private
That will make a directory "Private". Any data you put into the directory Private
will automatically be encrypted when you log out and decrypted when you log in.
If you want a different behavior or a different directory ...
mkdir ~/secret
chmod 700 ~/secret
sudo mount -t ecryptfs ~your_user/secret ~your_user/secret
Put your data into ~/secrte
To encrypt
sudo umount ~your_user/secret
To Decrypt
sudo mount ./secret ./secret -o key=passphrase,ecryptfs_cipher=aes,ecryptfs_key_bytes=16,ecryptfs_passthrough=no,ecryptfs_enable_filename_crypto=yes
Hint: make an alias for that second command.
See http://bodhizazen.com/Tutorials/Ecryptfs or man ecryptfs for additional details.
ecryptfs will certainly encrypt files and folders, ensuring that the data that gets written to disk is always encrypted, and that applications which need access to the cleartext context can get that seamlessly.
However, to answer your question specifically, you can certainly encrypt a single file with a passphrase and gpg:
gpg -c /tmp/file > /tmp/file.gpg
To encrypt a folder, you should use tar in conjunction with gpg:
tar zcvf - /tmp/directory | gpg -c > /tmp/directory.tar.gz.gpg