I wanted to ask what is the most efficient way to backup my whole CentOS machine (hard disk size is 30 GB), in a way that would allow me to restore the machine back to its current state in case the whole server or hard disk are gone.

I don't require the ability to restore specific files so I don't mind ending up with one big 30 GB file that can somehow be used to re-create my machine if something happens.

I also use Centos to run all my servers. So far I have only backed-up my data. I don't quite understand why you would want to back up the entire server. Perhaps you can elaborate on your reasons for wanting to do so.

Linux works nicely with a number of other computer systems, including Windows. With a few simple commands, Linux will happily safeguard data in those systems as well.
entirely.

For now, here's a quick Samba example. Pretend that you have a Windows PC called
speedy on your network. The user has shared the C: drive with the name SPEEDY_C. I can mount
that share on a Linux system running Samba like this:

Samba server and rsync options simultaniously gives you a feature to keep a backup of entire disk on Windows Machine as well as there are so many third party tools are availble there using that You can do this like FWbackups,Bacula