710 likes | 723 Views
CIS 90 - Lesson 14. Lesson Module Status Slides – Properties - Flash cards – No-stress quiz – Web calendar summary – Web book pages – Commands – Lab – done Supplies () - Class PC's – Scripts () –. CIS 90 - Lesson 14. Quiz. No Quiz Today !. CIS 90 - Lesson 14.
E N D
CIS 90 - Lesson 14 • Lesson Module Status • Slides – • Properties - • Flash cards – • No-stress quiz – • Web calendar summary – • Web book pages – • Commands – • Lab – done • Supplies () - • Class PC's – • Scripts () –
CIS 90 - Lesson 14 Quiz No Quiz Today !
CIS 90 - Lesson 14 The UNIX/Linux File System = hands on exercise for topic
CIS 90 - Lesson 14 Previous material and assignment • Questions? • No labs due today • Check grades page • Check your class/labs/ directory on Opus for graded work
CIS 90 - Lesson 14 Warmup Exercise Find the hidden treasure trove • Find the treasure buried in you Hidden folder. • When you find it make sure only you can read it and nobody can modify it.
CIS 90 - Lesson 14 Classroom PC's, VMs and Remote Server Opus One RHEL5 server per class Internet One RH9 Linux VM per laptop SSH is a network protocol that enables secure connections between computers One Windows laptop per student
CIS 90 - Lesson 14 Telnet and SSH (Secure Shell) Opus SSH - encrypted Telnet - all clear text Sniffer view of a Telnet session Sniffer view of a SSH session username password cat secret exit Local computer
CIS 90 - Lesson 14 ssh protocol • Secure Shell Protocol • Allows secure (encrypted connections between computers) • ssh command – secure login and terminal sessions • scp command – secure file copies between computers /
CIS 90 - Lesson 14 scp • Copy commands copy file(s) to a Destination • cp • copies files on the same computer • examples: • cp myscript myscript.v1 • cp myscript.v1 backups/ • cp /home/cis90/simmsben/bin/myscriptbenscript • scp • copies files between computers: • examples: • scproddyduk@opus.cabrillo.edu:myscript . • scp lab45 roddyduk@opus.cabrillo.edu:lab45 • scp lab45 roddyduk@opus.cabrillo.edu: /
CIS 90 - Lesson 14 scp command 1st argument 2nd argument (from) (to) scp roddyduk@opus.cabrillo.edu:bin/myscript . scp lab45 roddyduk@opus.cabrillo.edu:lab45 scp lab45 roddyduk@opus.cabrillo.edu:
CIS 90 - Lesson 14 scp Remote Local scp roddyduk@opus.cabrillo.edu:bin/myscript . Copy the file myscript from roddyduk's home bin/ directory on the remote system Opus to "here"
CIS 90 - Lesson 14 scp Remote Local scp roddyduk@opus.cabrillo.edu:bin/myscript . Path to file. Relative to user's home directory. Either the IP address or hostname of the remote computer. Need to connect to system on the Internet The username on the remote computer. Needed to login and this defines the home directory for the relative path to the file
CIS 90 - Lesson 14 scp Logged in to two different systems Local Linux System Opus /
CIS 90 - Lesson 14 scp Local Linux System Performing scp copy from Opus to local Red hat system Opus /
CIS 90 - Lesson 14 scp Catting files on both systems to verify the copy Local Linux System Opus /
CIS 90 - Lesson 14 Class Exercise scp • Start up the local VM on the laptops and login as cisco • Use Putty and login to your account on Opus • Copy the files banner and myscript from your bin directory on Opus • scp logname@opus.cabrillo.edu:bin/myscript . • scp logname@opus.cabrillo.edu:bin/banner . • Create a bin directory on your local VM (if needed) • mkdir bin • Move banner and myscript to your local VM bin directory • mv banner myscript bin/ • Check path and permissions to make insure /home/cisco/bin is in your path and that myscript and banner have execute permission set. • echo $PATH • ls –l /home/cisco/bin/ • Run the script you made on Opus on your local VM • myscript
CIS 90 - Lesson 14 To copy multiple files, use the * expansion character Note, this will copy files, but not directories
CIS 90 - Lesson 14 To recursively copy files and directories use the –r option Now all files and directories will be copied
CIS 90 - Lesson 14 Class Exercise scp • Copy all the files and directories in your Opus bin directory to your local bin directory • scp –r logname@opus.cabrillo.edu:bin/* /home/cisco/bin/ • Now see if you can copy your entire poems directory on Opus to a new poems directory in your local cisco home directory. When finished write the commands you used on the whiteboard.
CIS 90 - Lesson 14 scripting
CIS 90 - Lesson 14 myscript 3) # Commands for Task 3 date ;; Duke's CIS 90 Final Project 1) Color 2) My Find Command 3) More practice 4) Duke's friend made this one - Thank You 5) Task 5 6) Exit Enter Your Choice: 3 Wed Dec 3 14:00:53 PST 2008 Hit the Enter key to return to menu
CIS 90 - Lesson 14 myscript 3) # Commands for Task 3 echo "Hello $LOGNAME" date ;; Duke's CIS 90 Final Project 1) Color 2) My Find Command 3) More practice 4) Duke's friend made this one - Thank You 5) Task 5 6) Exit Enter Your Choice: 3 Hello roddyduk Wed Dec 3 14:07:07 PST 2008 Hit the Enter key to return to menu
CIS 90 - Lesson 14 myscript 3) # Commands for Task 3 echo "Hello $LOGNAME" echo $(cat /etc/passwd | grep $LOGNAME) date ;; Duke's CIS 90 Final Project 1) Color 2) My Find Command 3) More practice 4) Duke's friend made this one - Thank You 5) Task 5 6) Exit Enter Your Choice: 3 Hello roddyduk roddyduk:x:1156:103:Duke Roddy:/home/cis90/roddyduk:/bin/bash Wed Dec 3 14:07:07 PST 2008 Hit the Enter key to return to menu
CIS 90 - Lesson 14 myscript 3) # Commands for Task 3 echo "Hello $LOGNAME" echo $(cat /etc/passwd | grep $LOGNAME | cut -f5 -d":" ) date ;; Duke's CIS 90 Final Project 1) Color 2) My Find Command 3) More practice 4) Duke's friend made this one - Thank You 5) Task 5 6) Exit Enter Your Choice: 3 Hello roddyduk Duke Roddy Wed Dec 3 14:07:07 PST 2008 Hit the Enter key to return to menu
CIS 90 - Lesson 14 myscript 3) # Commands for Task 3 echo "Hello $LOGNAME" NAME=$(cat /etc/passwd | grep $LOGNAME | cut -f5 -d":" ) echo "Hello $NAME" date ;; Duke's CIS 90 Final Project 1) Color 2) My Find Command 3) More practice 4) Duke's friend made this one - Thank You 5) Task 5 6) Exit Enter Your Choice: 3 Hello roddyduk Hello Duke Roddy Wed Dec 3 14:07:07 PST 2008 Hit the Enter key to return to menu
CIS 90 - Lesson 14 myscript 3) # Commands for Task 3 echo "Hello $LOGNAME" NAME=$(cat /etc/passwd | grep $LOGNAME | cut -f5 -d":" ) echo "Hello $NAME" date ;; Duke's CIS 90 Final Project 1) Color 2) My Find Command 3) More practice 4) Duke's friend made this one - Thank You 5) Task 5 6) Exit Enter Your Choice: 3 Hello Duke Roddy Wed Dec 3 14:07:07 PST 2008 Hit the Enter key to return to menu
CIS 90 - Lesson 14 Class Exercise Scripting • Make a short script that does the following: • Get and displays the user's name • Runs one command
CIS 90 - Lesson 14 myscript 3) # Commands for Task 3 NAME=$(cat /etc/passwd | grep $LOGNAME | cut -f5 -d":" ) echo "Hello $NAME" date '+%A' date '+%A, %B %d, %Y' ;; Duke's CIS 90 Final Project 1) Color 2) My Find Command 3) More practice 4) Duke's friend made this one - Thank You 5) Task 5 6) Exit Enter Your Choice: 3 Hello Duke Roddy Wednesday Wednesday, December 03, 2008 Hit the Enter key to return to menu
CIS 90 - Lesson 14 myscript 3) # Commands for Task 3 NAME=$(cat /etc/passwd | grep $LOGNAME | cut -f5 -d":" ) echo "Hello $NAME" echo "$NAME, Do you like short or long dates?" echo -n "Enter 1 for short or 2 for long: " read ANSWER if [ "$ANSWER" = 1 ]; then date '+%A' else date '+%A, %B %d, %Y' fi ;; Enter Your Choice: 3 Hello Duke Roddy Duke Roddy, Do you like short or long dates? Enter 1 for short or 2 for long: 1 Wednesday Hit the Enter key to return to menu Enter Your Choice: 3 Hello Duke Roddy Duke Roddy, Do you like short or long dates? Enter 1 for short or 2 for long: 2 Wednesday, December 03, 2008 Hit the Enter key to return to menu
CIS 90 - Lesson 14 Class Exercise Scripting • Modify your script to do the following: • Ask the user a question • Use a conditional (if statement) that users the users response.
CIS 90 - Lesson 14 tar command options (no – needed) files to backup c tvf x archive file tarfile tar file(s) create table of contents (view) extract v = verbose, double v (vv) provides more information Note: The full path to each file is stored in the archive and these paths are used when restoring files
CIS 90 - Lesson 14 tar command Single file example [root@benji ~]# cd /opt/lampp/htdocs/ [root@benjihtdocs]# ls -l sample.html -rw-r--r-- 1 root root 194 Oct 24 10:13 sample.html [root@benjihtdocs]# cat sample.html <html> <head> <title>My first page</title> </head> <body> <h1>My first web page</h1> <p>Nothing can stop me now</p> <a href="http://google.com">My link to Google</a> </body> </html> [root@benjihtdocs]# [root@benjihtdocs]# tar cvf /root/sample.tar sample.html sample.html [root@benjihtdocs]# ls -l /root/sample.tar -rw-r--r-- 1 root root 10240 Nov 22 08:56 /root/sample.tar [root@benjihtdocs]# rm sample.html rm: remove regular file `sample.html'? y [root@benjihtdocs]# tar tvf /root/sample.tar -rw-r--r-- root/root 194 2008-10-24 10:13:10 sample.html [root@benjihtdocs]# tar xvf /root/sample.tar sample.html sample.html [root@benjihtdocs]# ls -l sample.html -rw-r--r-- 1 root root 194 Oct 24 10:13 sample.html [root@benjihtdocs]# cat sample.html <html> <head> <title>My first page</title> </head> <body> <h1>My first web page</h1> <p>Nothing can stop me now</p> <a href="http://google.com">My link to Google</a> </body> </html> [root@benjihtdocs]# Backup a web page file Oops! – file gets deleted View backed up file Restore the file
CIS 90 - Lesson 14 tar command Single file example verbose file to back up (requires full path) tarfile to use create • tar cvf /root/sample.tar sample.html • sample.html • tar tvf /root/sample.tar • -rw-r--r-- root/root 194 2008-10-24 10:13:10 sample.html • tar xvf /root/sample.tar sample.html • sample.html verbose tarfile to use view (table of contents) verbose file in archive to restore (requires full path) tarfile to use extract
CIS 90 - Lesson 14 tar command Pay attention to the path stored in the tarfile Creating the tarfile from another directory using absolute path [root@benji ~]# tar cvf sample2.tar /opt/lampp/htdocs/sample.html tar: Removing leading `/' from member names /opt/lampp/htdocs/sample.html [root@benji ~]# tar tvf sample2.tar -rw-r--r-- root/root 194 2008-10-24 10:13:10 opt/lampp/htdocs/sample.html [root@benji ~]# [root@benji ~]# tar cvf sample2.tar ../opt/lampp/htdocs/sample.html tar: Removing leading `../' from member names ../opt/lampp/htdocs/sample.html [root@benji ~]# tar tvf sample2.tar -rw-r--r-- root/root 194 2008-10-24 10:13:10 opt/lampp/htdocs/sample.html [root@benji ~]# Note, the leading / gets stripped This path is used when restoring files Creating the tarfile from another directory using relative path path Note, the leading ../ gets stripped This path is used when restoring files
CIS 90 - Lesson 14 tar command -C option -C dir -xvf tar tarfile files(s) The –C option can be used to set the starting directory for file to be restored to. Add a – to the other options as well
CIS 90 - Lesson 14 tar command -C option Find file to restore in archive [root@benji ~]# tar tf htdocs.tar | grep jp.php ./xampp/lang/jp.php [root@benjilang]# cd /opt/lampp/htdocs/ [root@benjihtdocs]# tar xvf /root/htdocs.tar ./xampp/lang/jp.php ./xampp/lang/jp.php [root@benjihtdocs]# [root@benji~]# tar -C /opt/lampp/htdocs/ -xvf htdocs.tar ./xampp/lang/jp.php ./xampp/lang/jp.php [root@benji ~]# Change to the directory where the backup was made Or use the –C option to restore from another directory
CIS 90 - Lesson 14 Class Exercise tar command • Change to the /opt/lampp/htdocs directory. • Backup sample.html using: • tar cvf /root/sample.tar sample.html • Verify your tarfile contains sample.html • What is the path to sample.html in the tarfile? [Table 1-4] • Delete then practice restoring sample.html: • To its original location • Where did you have to be to do this? [Table 9-12] • To the /tmpdirectory • Where did you have to be to do this? [Table 17-20] • Now use the tar man page to check out the –C directory option. • Delete the sample.html in the /tmpdirectory • Restore sample.html from /root to the /tmpdirectory with the –C option. What command did you use [Table 5-9]?
CIS 90 - Lesson 14 tar command Directory example [root@benjihtdocs]# tar cvf /root/htdocs.tar . ./ ./webalizer/ ./sample.html ./xampp/ ./xampp/lang.tmp ./xampp/xampp.js ./xampp/index.php ./xampp/test/ ./xampp/test/xampp_ming/ ./xampp/test/xampp_ming/gif.gif ./xampp/test/xampp_ming/jpg.jpg ./xampp/test/xampp_ming/png.png ./xampp/test/xampp_ming/bitmaps.php ./xampp/test/xampp_win.png ./xampp/test/xampp_ming.zip ./xampp/perl.pl ./xampp/guestbook-no.pl ./xampp/splash-swf.php ./xampp/guestbook-pl.pl ./xampp/ssi.shtml ./xampp/components.php ./xampp/contrib/ ./xampp/contrib/oracle.php ./xampp/contrib/cds.xml ./xampp/contrib/soap.php ./xampp/contrib/sqlite.php ./xampp/contrib/sax.php ./xampp/contrib/postgresql.pl ./xampp/contrib/interbase.pl ./xampp/contrib/mysql.php ./xampp/contrib/dom.php ./xampp/contrib/mingstats_swf.php ./xampp/contrib/mysql.pl ./xampp/contrib/testperldbi.pl ./xampp/contrib/xmlrss.php ./xampp/contrib/mingstats.html ./xampp/contrib/sql2xml.php ./xampp/contrib/sqlite.pl ./xampp/contrib/BabelSans-B.fdb ./xampp/contrib/oracle.pl ./xampp/contrib/interbase.php ./xampp/contrib/postgresql.php ./xampp/manuals.php ./xampp/cgi.cgi ./xampp/cds.php ./xampp/webalizer.php ./xampp/biorhythm.php ./xampp/AnkeCalligraph.TTF ./xampp/head.php ./xampp/guestbook-zh.pl ./xampp/start.php ./xampp/AnkeCalligraph.fdb ./xampp/mingswf.php ./xampp/mysql.php ./xampp/guestbook-nl.pl ./xampp/navi.php ./xampp/lang.php ./xampp/security.php ./xampp/lang/ ./xampp/lang/de.php ./xampp/lang/it.php ./xampp/lang/fr.php ./xampp/lang/es.php ./xampp/lang/pt_br.php ./xampp/lang/nl.php ./xampp/lang/zh.php ./xampp/lang/no.php ./xampp/lang/pl.php ./xampp/lang/en.php ./xampp/lang/languages.php ./xampp/lang/jp.php ./xampp/splash-logo.php ./xampp/langsettings.php ./xampp/.version ./xampp/status.php ./xampp/phonebook.php ./xampp/img/ ./xampp/img/rb.gif ./xampp/img/status3.gif ./xampp/img/logo-small.gif ./xampp/img/logo-small.jpg ./xampp/img/new.png ./xampp/img/signature-kay.gif ./xampp/img/lt.gif ./xampp/img/benji-500x420.jpg ./xampp/img/status4.gif ./xampp/img/rt.gif ./xampp/img/strichel.gif ./xampp/img/head-linux.gif ./xampp/img/head-xampp.gif ./xampp/img/xampp-logo.jpg ./xampp/img/head-fuer.gif ./xampp/img/head-for.gif ./xampp/img/head-solaris.gif ./xampp/img/status2.gif ./xampp/img/status1.gif ./xampp/img/head-windows.gif ./xampp/img/logo-big.gif ./xampp/img/signature-oswald.gif ./xampp/img/status5.gif ./xampp/img/blank.gif ./xampp/img/lb.gif ./xampp/img/xampp-logo-new.gif ./xampp/img/apachefriends.gif ./xampp/guestbook-es.pl ./xampp/guestbook-de.pl ./xampp/phpinfo.php ./xampp/splash.php ./xampp/guestbook-pt_br.pl ./xampp/guestbook.dat ./xampp/charset.php ./xampp/test.php ./xampp/softwarelist.inc ./xampp/guestbook-it.pl ./xampp/cds-fpdf.php ./xampp/ssi.inc ./xampp/php.php ./xampp/sqlite/ ./xampp/sqlite/cdcol ./xampp/sqlite/phonebook.sqlite ./xampp/sqlite/.htaccess ./xampp/xampp.css ./xampp/ming.php ./xampp/showcode.php ./xampp/guestbook-fr.pl ./xampp/guestbook-en.pl ./xampp/iart.php ./.hidden ./favicon.ico ./index.html [root@benjihtdocs]# rmxampp/iart.php .hidden sample.html rm: remove regular file `xampp/iart.php'? y rm: remove regular empty file `.hidden'? y rm: remove regular file `sample.html'? y [root@benjihtdocs]# tar tvf /root/htdocs.tar ./xampp/iart.php ./.hidden ./sample.html -rw-r--r-- root/root 194 2008-10-24 10:13:10 ./sample.html -rw-r--r-- root/root 3004 2006-11-10 08:57:01 ./xampp/iart.php -rw-r--r-- root/root 0 2008-11-22 09:23:17 ./.hidden [root@benjihtdocs]# tar xvf /root/htdocs.tar ./xampp/iart.php ./.hidden ./sample.html ./sample.html ./xampp/iart.php ./.hidden Backup up files (including hidden and sub-directories) starting from "here" Note how tar saves full path for each file backed up Delete some files Verify they were backed up Restore the files that were deleted
CIS 90 - Lesson 14 tarfile to use tar command Directory example create files to back up (starting point) verbose tar cvf /root/htdocs.tar . ./ ./webalizer/ ./sample.html ./xampp/ ./xampp/lang.tmp ./xampp/xampp.js ./xampp/index.php ./xampp/test/ ./xampp/test/xampp_ming/ ./xampp/test/xampp_ming/gif.gif ./xampp/test/xampp_ming/jpg.jpg ./xampp/test/xampp_ming/png.png ./xampp/test/xampp_ming/bitmaps.php ./xampp/test/xampp_win.png ./xampp/test/xampp_ming.zip ./xampp/perl.pl ./xampp/guestbook-no.pl ./xampp/splash-swf.php ./xampp/guestbook-pl.pl ./xampp/ssi.shtml ./xampp/components.php ./xampp/contrib/ ./xampp/contrib/oracle.php ./xampp/contrib/cds.xml ./xampp/contrib/soap.php ./xampp/contrib/sqlite.php ./xampp/contrib/sax.php ./xampp/contrib/postgresql.pl ./xampp/contrib/interbase.pl ./xampp/contrib/mysql.php ./xampp/contrib/dom.php ./xampp/contrib/mingstats_swf.php ./xampp/contrib/mysql.pl ./xampp/contrib/testperldbi.pl ./xampp/guestbook-es.pl ./xampp/guestbook-de.pl ./xampp/phpinfo.php ./xampp/splash.php ./xampp/guestbook-pt_br.pl ./xampp/guestbook.dat ./xampp/charset.php ./xampp/test.php ./xampp/softwarelist.inc ./xampp/guestbook-it.pl ./xampp/cds-fpdf.php ./xampp/ssi.inc ./xampp/php.php ./xampp/sqlite/ ./xampp/sqlite/cdcol ./xampp/sqlite/phonebook.sqlite ./xampp/sqlite/.htaccess ./xampp/xampp.css ./xampp/ming.php ./xampp/showcode.php ./xampp/guestbook-fr.pl ./xampp/guestbook-en.pl ./xampp/iart.php ./.hidden ./favicon.ico ./index.html ./xampp/contrib/xmlrss.php ./xampp/contrib/mingstats.html ./xampp/contrib/sql2xml.php ./xampp/contrib/sqlite.pl ./xampp/contrib/BabelSans-B.fdb ./xampp/contrib/oracle.pl ./xampp/contrib/interbase.php ./xampp/contrib/postgresql.php ./xampp/manuals.php ./xampp/cgi.cgi ./xampp/cds.php ./xampp/webalizer.php ./xampp/biorhythm.php ./xampp/AnkeCalligraph.TTF ./xampp/head.php ./xampp/guestbook-zh.pl ./xampp/start.php ./xampp/AnkeCalligraph.fdb ./xampp/mingswf.php ./xampp/mysql.php ./xampp/guestbook-nl.pl ./xampp/navi.php ./xampp/lang.php ./xampp/security.php ./xampp/lang/ ./xampp/lang/de.php ./xampp/lang/it.php ./xampp/lang/fr.php ./xampp/lang/es.php ./xampp/lang/pt_br.php ./xampp/lang/nl.php ./xampp/lang/zh.php ./xampp/lang/no.php ./xampp/lang/pl.php ./xampp/lang/languages.php ./xampp/lang/jp.php ./xampp/splash-logo.php ./xampp/langsettings.php ./xampp/.version ./xampp/status.php ./xampp/phonebook.php ./xampp/img/ ./xampp/img/rb.gif ./xampp/img/status3.gif ./xampp/img/logo-small.gif ./xampp/img/logo-small.jpg ./xampp/img/new.png ./xampp/img/signature-kay.gif ./xampp/img/lt.gif ./xampp/img/benji-500x420.jpg ./xampp/img/status4.gif ./xampp/img/rt.gif ./xampp/img/strichel.gif ./xampp/img/head-linux.gif ./xampp/img/head-xampp.gif ./xampp/img/xampp-logo.jpg ./xampp/img/head-fuer.gif ./xampp/img/head-for.gif ./xampp/img/head-solaris.gif ./xampp/img/status2.gif ./xampp/img/status1.gif ./xampp/img/head-windows.gif ./xampp/img/logo-big.gif ./xampp/img/signature-oswald.gif ./xampp/img/status5.gif ./xampp/img/blank.gif ./xampp/img/lb.gif ./xampp/img/xampp-logo-new.gif
CIS 90 - Lesson 14 tar command Directory example view (table of contents) verbose tarfile Files to find in archive [root@benjihtdocs]# tar tvf /root/htdocs.tar ./xampp/iart.php ./.hidden ./sample.html -rw-r--r-- root/root 194 2008-10-24 10:13:10 ./sample.html -rw-r--r-- root/root 3004 2006-11-10 08:57:01 ./xampp/iart.php -rw-r--r-- root/root 0 2008-11-22 09:23:17 ./.hidden [root@benjihtdocs]# tar xvf /root/htdocs.tar ./xampp/iart.php ./.hidden ./sample.html ./sample.html ./xampp/iart.php ./.hidden verbose extract tarfile Files to find to extract
CIS 90 - Lesson 14 Class Exercise tar command • Change to the /opt/lampp/ directory. Note the htdocs and backup directories. • Backup the htdocs directory (including sub-directories) to htdocs-20081125.tar the backup directory. What command did you use? [Table 21-24] • Verify your tarfile contains xampp/lang/jp.phpWhat command did you use? From where? [Table 1-4] • Delete and then restore xampp/lang/jp.php from the backup directory What command did you use? [Table 9-12]
CIS 90 - Lesson 14 tar command Size can differ between tarfile and backed up file • Tarfiles • Tarfile can be smaller than backed up file as it only saves the date, not unused portion of data blocks • Tarfile can be larger if backed up file is a sparse file • Additional empty blocks can be added to tar version
CIS 90 - Lesson 14 tar command du size can differ between tarfile and backed up file • Tarfiles • Additional empty blocks can be added to tar version [root@benji log]# cp messages /root; tar cvf /root/messages.tar messages; tar -cSvf /root/messagesS.tar messages [root@benji ~]# ls -l messages /var/log/messages sparse/messages nosparse/messages -rw------- 1 root root127538 Nov 22 08:20 messages -rw------- 1 root root127538 Nov 22 08:13 nosparse/messages -rw------- 1 root root127538 Nov 22 08:13 sparse/messages -rw------- 1 root root127538 Nov 22 08:13 /var/log/messages [root@benji ~]# [root@benji ~]# du messages /var/log/messages sparse/messages nosparse/messages 136 messages 127 /var/log/messages 136 sparse/messages 136nosparse/messages ls command show same size for original, copy and tar extracts original file original file du report shows more disk space used than original for copy and tar extracts Note: the –s option is to handle sparse files (discussed later)
CIS 90 - Lesson 14 tar command Size can differ between tarfile and backed up file • Tarfiles • Additional empty blocks can be added to tar version [root@benji ~]# stat messages /var/log/messages sparse/messages nosparse/messages File: `messages' Size: 127538 Blocks: 272 IO Block: 4096 regular file <snipped> File: `/var/log/messages' Size: 127538 Blocks: 254 IO Block: 4096 regular file <snipped> File: `sparse/messages' Size: 127538 Blocks: 272 IO Block: 4096 regular file <snipped> File: `nosparse/messages' Size: 127538 Blocks: 272 IO Block: 4096 regular file <snipped> [root@benji ~]# stat command shows copy and files extracted from tarfile have additional blocks which explains why file size is the same but disk usage is higher.
CIS 90 - Lesson 14 tar command sparse files • Sparse Files • Null blocks (containing only zeroes) are not stored on the disk • Can be problematic if utilities don't recognize them [root@benji ~]# cd /var/log [root@benji log]# ls -l lastlog -rw-r--r-- 1 root root 234476 Nov 22 05:18 lastlog [root@benji log]# du -h lastlog 16K lastlog Note the reduced size of the file actually stored on the disk using du –h command
CIS 90 - Lesson 14 tar command sparse files • Sparse Files • tar command without using the sparse option (-S) for sparse file [root@benji ~]# cd /var/log [root@benji log]# tar cvf /root/lastlog.tar lastlog lastlog [root@benji log]# cd /root [root@benji ~]# ls -l lastlog.tar -rw-r--r-- 1 root root 245760 Nov 22 05:19 lastlog.tar [root@benji ~]# du -h lastlog.tar 248K lastlog.tar [root@benji ~]# tar xvf lastlog.tar lastlog [root@benji ~]# ls -l lastlog -rw-r--r-- 1 root root 234476 Nov 22 05:18 lastlog [root@benji ~]# du -h lastlog 240K lastlog The tarfile has expanded all the null blocks increasing disk space usage
CIS 90 - Lesson 14 tar command sparse files • Sparse Files • tar command using the sparse option (-S) with sparse file [root@benji ~]# cd /var/log [root@benji log]# tar cSvf /root/lastlog2.tar lastlog lastlog [root@benji log]# cd /root [root@benji ~]# tar xvf lastlog2.tar lastlog [root@benji ~]# ls -l lastlog -rw-r--r-- 1 root root 234476 Nov 22 05:18 lastlog [root@benji ~]# du -h lastlog 20K lastlog [root@benji ~]# Using the -S option, the tar command handles the sparse file efficiently
CIS 90 - Lesson 14 tar command compression c t vf x z j tarfile tar file(s) -C dir The z option uses gzip compresssion and the j option uses bzip2 compression bzip2 is slower, but compresses more gzip is faster, but compreses less