Avoid Confirmation while Copying Files

While copying files, using cp command you would have noticed that it always asks for the confirmation overwriting files like below.

[root@server ~]# cp -v test.txt example.txt
cp: overwrite ‘example.txt’?

Will see how you can avoid that – but before that let’s see why it happens.

This happens because of alias set in the .bashrc file.

[root@server ~]# cat .bashrc
# .bashrc

# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

you can remove alias in .bashrc file – and you won’t be asked for confirmation ever again.

but if you want to skip confirmation for time being then you can call the cp command directly from bin – Example.

[root@server ~]# /bin/cp -v test.txt example.txt
‘test.txt’ -> ‘example.txt’
[root@server ~]#

Rsync command examples

So what is Rsync?
Rsync is a Linux tool which helps is syncing a file from a server A to server B and vice versa. Rsync is powerful tool which numerous options and we will see some of the examples below.

Rsync Command to copy files in the destination.

So the basic command would look like this.

[root@server ~]#  rsync [option] user@host:[file/directory origin] [destination]

[root@server ~]# rsync -avzh /home/user/backups/ user@backup01:/home/backup/

So above command will copy contents in the backups folder to the remote destination – Important note if you don’t put trailing / in the /home/user/backups it will copy whole folder instead of just contents in it.

Further to explain above command:-
-a stands for copy files recursively and preserve ownership of files when files are copied
-v stands for runs the verbose version of the command; all of the processes that are run will be written out for the user to read
-z stands for compress the data synced
– h stands for produce easily readable output, not just numbers

Show Progress:-

If you are doing a large transfers and want to see progress, you can use –progress option.

[root@server ~]# rsync -avzh --progress /home/user/backups/ user@backup01:/home/backup/


Exclude Files/folders from syncing.

Create a file call exclude.txt and add all the files and folders you want to exclude e.g:-
test/file.txt
foldername

rsync -avzh --exclude-from 'exclude.txt' sync/ 5.7.7.2:/home/

Basic AWK command examples.

Along with SED command Linux – AWK is powerful command line tool which would help you to perform a lot of actions on your data. It can help you to sort, print and process your data in the way you like. You can use AWK to read and edit the file.

AWK is mostly used in the Shell Scripts. Lets check out Awk without wasting more time 🙂

Let’s create a file called data.txt with the following contents – so we can learn AWK command better with examples.

Bob America Married 50
Jay India Unmarried 25
Abdul UAE married 33
Mona London Married 28
John America Unmarried 18
Neha India Unmarried 16

Run the command below which will print the contents in the file as it is.

[root@server ~]# awk '{print}' data.txt

Bob America Married 50
Jay India Unmarried 25
Abdul UAE married 33
Mona London Married 28

Print all the lines Matching with America.

[root@server ~]# awk '/America/ {print}' data.txt
Bob America Married 50
John America Unmarried 18

Only Print age from the file. As you can see that Age is written in the 4 column so we will use the command below.

[root@server ~]# awk '{print $4}' data.txt
50
25
33
28
18
16
[root@server ~]#

So now if you want to print Name and Age.

[root@server ~]# awk '{print $1, $4}' data.txt
Bob 50
Jay 25
Abdul 33
Mona 28
John 18
Neha 16

You can print age first by changing the order.


[root@server ~]# awk '{print $4, $1}' data.txt
50 Bob
25 Jay
33 Abdul
28 Mona
18 John
16 Neha
[root@server ~]#

Conditional Printing

I would like to print the names of the people who live in America. So here you will use If Condition in awk. In the example below it will check if the America is present in the column 2 it will print the column 1

[root@server ~]# awk '{ if ($2 == "America") print $1;}' data.txt
Bob
John

In the above example, if you just put awk ‘{ if ($2 == “America”) print;}’ data.txt it will print the complete line.

AWK can do much more that what I have specified above. I will come up with Advanced AWK article soon.

Restart service automatically and get notified.

So you are running you own webserver which at the times is short of resources and the services like MySQL and HTTPD stops – results your website is down until you get a chance to fix it.

Quick solution would be to implement a script which restarts services at such situations and emails you that the service was restarted – so you can later go and check what was the problem

So below is the script, which will make sure that HTTP , MySQL and Postfix is running all the time – It will check status of the service and if it’s stopped or Dead it will restart it.

How to Implement this Script ?

Setup a cron to run the script every minute – like below.

* * * * * root /home/bob/scripts/servicecheck.sh

Create a file called servicecheck.sh and put the code below.
Just change the email address in the script to yours and you are done.

#!/bin/bash

#####################
#MySQL CHECK
#####################

/sbin/service mariadb status > /var/log/mysqlservicestatus 2>&1
STATUS=$(cat /var/log/mysqlservicestatus | egrep 'dead|failed')

        if [[ $STATUS = "" ]]
        then
/bin/logger -t MYSQL IS RUNNING
else
/sbin/service mariadb restart
/bin/logger -t restarted mysql
echo "Restarted MYSQL" | /bin/mail -s "Restarted MYSQL" you@email.com
fi
echo > /var/log/mysqlservicestatus

#####################
#HTTPD CHECK
#####################

/sbin/service httpd status > /var/log/httpdservicestatus 2>&1
STATUS=$(cat /var/log/httpdservicestatus | egrep 'dead|failed')

        if [[ $STATUS = "" ]]
        then
/bin/logger -t httpd IS RUNNING
else
/sbin/service httpd restart
/bin/logger -t restarted httpd
echo "Restarted HTTPD" | /bin/mail -s "Restarted HTTPD" you@email.com
fi

echo > /var/log/httpdservicestatus


#####################
#POSTFIX CHECK
#####################

/sbin/service postfix status > /var/log/postfixservicestatus 2>&1
STATUS=$(cat /var/log/postfixservicestatus | egrep 'dead|failed')

        if [[ $STATUS = "" ]]
        then
/bin/logger -t postfix IS RUNNING
else
/sbin/service postfix restart
/bin/logger -t restarted postfix
echo "Restarted postfix" | /bin/mail -s "Restarted postfix" you@email.com
fi

You want to monitor other services, just go ahead and add it.