{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# File archival and recovery" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Create files to play with." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "echo \"aaaaa\" > a.txt\n", "echo \"bbbbb\" > b.txt\n", "echo \"ccccc\" > c.txt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## File compression and archival" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "a.txt b.txt c.txt\n" ] } ], "source": [ "ls ?.txt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Combine multiple files into single file" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "a.txt\n", "b.txt\n", "c.txt\n" ] } ], "source": [ "tar -cvf abc.tar ?.txt" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[0m\u001b[01;31mabc.tar\u001b[0m\n", "a.txt\n", "b.txt\n", "c.txt\n", "\u001b[01;34mdata\u001b[0m\n", "\u001b[01;34mfigs\u001b[0m\n", "lsd1.txt\n", "lsd2.txt\n", "lsd3.txt\n", "R00_Review_Basics.ipynb\n", "R00_Review_Basics_Scratch.ipynb\n", "R01_Data_Manipulation.ipynb\n", "R01_Data_Manipulation_Scratch.ipynb\n", "R01_Data_Manipulation_Solutions.ipynb\n", "R01_Manipulating_Data_In_R.ipynb\n", "R02_Tidying_Data_In_R.ipynb\n", "R02_Tidying_Data.ipynb\n", "R02_Tidying_Data_Solutions.ipynb\n", "R03_FileIO.ipynb\n", "R04_Unsupervised_Learning.ipynb\n", "R04_Unsupervised_Learning_Scratch.ipynb\n", "R05_Unsupervised_Learning_More_Examples.ipynb\n", "R06_Graphics_Overview.ipynb\n", "R07_Graphics_Base.ipynb\n", "R08_Graphics_ggplot2.ipynb\n", "R09_Graphics_Exercise.ipynb\n", "R09_Graphics_Exercise_Solutions.ipynb\n", "\u001b[01;34mseqs\u001b[0m\n", "Unix01_File_And_Directory.ipynb\n", "Unix01_File_And_Directory_Solutions.ipynb\n", "Unix02_FileIO.ipynb\n", "Unix02_FileIO_Solutions.ipynb\n", "Unix03_File_Storage.ipynb\n", "Unix03_File_Storage_Solutions.ipynb\n", "Unix04_Text_Manipulation.ipynb\n", "Unix04_Text_Manipulation_Solutinos.ipynb\n", "Unix05_Variables.ipynb\n", "Unix05_Variables_Solutions.ipynb\n", "Unix06_Bash_Bioinformatics.ipynb\n", "Unix07_Capstone_Exercise.ipynb\n", "Unix07_Capstone_Exercise_Solutions.ipynb\n", "Unix_Appendix01_Regular_Expressions.ipynb\n", "Unix_Appendix02_Review.ipynb\n" ] } ], "source": [ "ls" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Compress concatenated file" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "gzip abc.tar" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[0m\u001b[01;31mabc.tar.gz\u001b[0m\n", "a.txt\n", "b.txt\n", "c.txt\n", "\u001b[01;34mdata\u001b[0m\n", "\u001b[01;34mfigs\u001b[0m\n", "lsd1.txt\n", "lsd2.txt\n", "lsd3.txt\n", "R00_Review_Basics.ipynb\n", "R00_Review_Basics_Scratch.ipynb\n", "R01_Data_Manipulation.ipynb\n", "R01_Data_Manipulation_Scratch.ipynb\n", "R01_Data_Manipulation_Solutions.ipynb\n", "R01_Manipulating_Data_In_R.ipynb\n", "R02_Tidying_Data_In_R.ipynb\n", "R02_Tidying_Data.ipynb\n", "R02_Tidying_Data_Solutions.ipynb\n", "R03_FileIO.ipynb\n", "R04_Unsupervised_Learning.ipynb\n", "R04_Unsupervised_Learning_Scratch.ipynb\n", "R05_Unsupervised_Learning_More_Examples.ipynb\n", "R06_Graphics_Overview.ipynb\n", "R07_Graphics_Base.ipynb\n", "R08_Graphics_ggplot2.ipynb\n", "R09_Graphics_Exercise.ipynb\n", "R09_Graphics_Exercise_Solutions.ipynb\n", "\u001b[01;34mseqs\u001b[0m\n", "Unix01_File_And_Directory.ipynb\n", "Unix01_File_And_Directory_Solutions.ipynb\n", "Unix02_FileIO.ipynb\n", "Unix02_FileIO_Solutions.ipynb\n", "Unix03_File_Storage.ipynb\n", "Unix03_File_Storage_Solutions.ipynb\n", "Unix04_Text_Manipulation.ipynb\n", "Unix04_Text_Manipulation_Solutinos.ipynb\n", "Unix05_Variables.ipynb\n", "Unix05_Variables_Solutions.ipynb\n", "Unix06_Bash_Bioinformatics.ipynb\n", "Unix07_Capstone_Exercise.ipynb\n", "Unix07_Capstone_Exercise_Solutions.ipynb\n", "Unix_Appendix01_Regular_Expressions.ipynb\n", "Unix_Appendix02_Review.ipynb\n" ] } ], "source": [ "ls" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "rm abc.tar.gz" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### In one step" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "a.txt\n", "b.txt\n", "c.txt\n" ] } ], "source": [ "tar -czvf abc.tar.gz ?.txt " ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[0m\u001b[01;31mabc.tar.gz\u001b[0m\n", "a.txt\n", "b.txt\n", "c.txt\n", "\u001b[01;34mdata\u001b[0m\n", "\u001b[01;34mfigs\u001b[0m\n", "lsd1.txt\n", "lsd2.txt\n", "lsd3.txt\n", "R00_Review_Basics.ipynb\n", "R00_Review_Basics_Scratch.ipynb\n", "R01_Data_Manipulation.ipynb\n", "R01_Data_Manipulation_Scratch.ipynb\n", "R01_Data_Manipulation_Solutions.ipynb\n", "R01_Manipulating_Data_In_R.ipynb\n", "R02_Tidying_Data_In_R.ipynb\n", "R02_Tidying_Data.ipynb\n", "R02_Tidying_Data_Solutions.ipynb\n", "R03_FileIO.ipynb\n", "R04_Unsupervised_Learning.ipynb\n", "R04_Unsupervised_Learning_Scratch.ipynb\n", "R05_Unsupervised_Learning_More_Examples.ipynb\n", "R06_Graphics_Overview.ipynb\n", "R07_Graphics_Base.ipynb\n", "R08_Graphics_ggplot2.ipynb\n", "R09_Graphics_Exercise.ipynb\n", "R09_Graphics_Exercise_Solutions.ipynb\n", "\u001b[01;34mseqs\u001b[0m\n", "Unix01_File_And_Directory.ipynb\n", "Unix01_File_And_Directory_Solutions.ipynb\n", "Unix02_FileIO.ipynb\n", "Unix02_FileIO_Solutions.ipynb\n", "Unix03_File_Storage.ipynb\n", "Unix03_File_Storage_Solutions.ipynb\n", "Unix04_Text_Manipulation.ipynb\n", "Unix04_Text_Manipulation_Solutinos.ipynb\n", "Unix05_Variables.ipynb\n", "Unix05_Variables_Solutions.ipynb\n", "Unix06_Bash_Bioinformatics.ipynb\n", "Unix07_Capstone_Exercise.ipynb\n", "Unix07_Capstone_Exercise_Solutions.ipynb\n", "Unix_Appendix01_Regular_Expressions.ipynb\n", "Unix_Appendix02_Review.ipynb\n" ] } ], "source": [ "ls" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "rm ?.txt" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[0m\u001b[01;31mabc.tar.gz\u001b[0m\n", "\u001b[01;34mdata\u001b[0m\n", "\u001b[01;34mfigs\u001b[0m\n", "lsd1.txt\n", "lsd2.txt\n", "lsd3.txt\n", "R00_Review_Basics.ipynb\n", "R00_Review_Basics_Scratch.ipynb\n", "R01_Data_Manipulation.ipynb\n", "R01_Data_Manipulation_Scratch.ipynb\n", "R01_Data_Manipulation_Solutions.ipynb\n", "R01_Manipulating_Data_In_R.ipynb\n", "R02_Tidying_Data_In_R.ipynb\n", "R02_Tidying_Data.ipynb\n", "R02_Tidying_Data_Solutions.ipynb\n", "R03_FileIO.ipynb\n", "R04_Unsupervised_Learning.ipynb\n", "R04_Unsupervised_Learning_Scratch.ipynb\n", "R05_Unsupervised_Learning_More_Examples.ipynb\n", "R06_Graphics_Overview.ipynb\n", "R07_Graphics_Base.ipynb\n", "R08_Graphics_ggplot2.ipynb\n", "R09_Graphics_Exercise.ipynb\n", "R09_Graphics_Exercise_Solutions.ipynb\n", "\u001b[01;34mseqs\u001b[0m\n", "Unix01_File_And_Directory.ipynb\n", "Unix01_File_And_Directory_Solutions.ipynb\n", "Unix02_FileIO.ipynb\n", "Unix02_FileIO_Solutions.ipynb\n", "Unix03_File_Storage.ipynb\n", "Unix03_File_Storage_Solutions.ipynb\n", "Unix04_Text_Manipulation.ipynb\n", "Unix04_Text_Manipulation_Solutinos.ipynb\n", "Unix05_Variables.ipynb\n", "Unix05_Variables_Solutions.ipynb\n", "Unix06_Bash_Bioinformatics.ipynb\n", "Unix07_Capstone_Exercise.ipynb\n", "Unix07_Capstone_Exercise_Solutions.ipynb\n", "Unix_Appendix01_Regular_Expressions.ipynb\n", "Unix_Appendix02_Review.ipynb\n" ] } ], "source": [ "ls" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Recover files" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "a.txt\n", "b.txt\n", "c.txt\n" ] } ], "source": [ "tar -xzvf abc.tar.gz" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[0m\u001b[01;31mabc.tar.gz\u001b[0m\n", "a.txt\n", "b.txt\n", "c.txt\n", "\u001b[01;34mdata\u001b[0m\n", "\u001b[01;34mfigs\u001b[0m\n", "lsd1.txt\n", "lsd2.txt\n", "lsd3.txt\n", "R00_Review_Basics.ipynb\n", "R00_Review_Basics_Scratch.ipynb\n", "R01_Data_Manipulation.ipynb\n", "R01_Data_Manipulation_Scratch.ipynb\n", "R01_Data_Manipulation_Solutions.ipynb\n", "R01_Manipulating_Data_In_R.ipynb\n", "R02_Tidying_Data_In_R.ipynb\n", "R02_Tidying_Data.ipynb\n", "R02_Tidying_Data_Solutions.ipynb\n", "R03_FileIO.ipynb\n", "R04_Unsupervised_Learning.ipynb\n", "R04_Unsupervised_Learning_Scratch.ipynb\n", "R05_Unsupervised_Learning_More_Examples.ipynb\n", "R06_Graphics_Overview.ipynb\n", "R07_Graphics_Base.ipynb\n", "R08_Graphics_ggplot2.ipynb\n", "R09_Graphics_Exercise.ipynb\n", "R09_Graphics_Exercise_Solutions.ipynb\n", "\u001b[01;34mseqs\u001b[0m\n", "Unix01_File_And_Directory.ipynb\n", "Unix01_File_And_Directory_Solutions.ipynb\n", "Unix02_FileIO.ipynb\n", "Unix02_FileIO_Solutions.ipynb\n", "Unix03_File_Storage.ipynb\n", "Unix03_File_Storage_Solutions.ipynb\n", "Unix04_Text_Manipulation.ipynb\n", "Unix04_Text_Manipulation_Solutinos.ipynb\n", "Unix05_Variables.ipynb\n", "Unix05_Variables_Solutions.ipynb\n", "Unix06_Bash_Bioinformatics.ipynb\n", "Unix07_Capstone_Exercise.ipynb\n", "Unix07_Capstone_Exercise_Solutions.ipynb\n", "Unix_Appendix01_Regular_Expressions.ipynb\n", "Unix_Appendix02_Review.ipynb\n" ] } ], "source": [ "ls" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "rm abc.tar.gz" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Checksums\n", "\n", "When working with genomic data, we deal with very large files. There is a small risk that these files will be corrupted over time or during data transfer. To ensure that files are not changed, we use a “checksum” function. This is a function that generates an long, essentially random number called a checksum that represents the contents of the file. When the file contents change, so will the checksum. In theory, there is a very small probability that two different files generate the same checksum, but in practice the probability is too small to worry about.\n", "\n", "There are several different algorithms for generating the checksums, and at least 3 Unix commands to do so, but they all work very similarly for our purposes.\n", "\n", "The strategy is:\n", "\n", "- Generate and store a checksum together with a data file whose integrity you care about\n", "- When you use or download the data, re-generate the checksum (using the same algorithm e.g. MD5) and compare with the checksum\n" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "cat > hello.txt << EOF\n", "1 Hello, bash\n", "2 Hello, again\n", "3 Hello\n", "4 again\n", "EOF" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1 Hello, bash\n", "2 Hello, again\n", "3 Hello\n", "4 again\n" ] } ], "source": [ "cat hello.txt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Different algorithms to generate checkusms" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1567754519 45 hello.txt\n" ] } ], "source": [ "cksum hello.txt" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "a68554400613f5445c13c57907e976ed hello.txt\n" ] } ], "source": [ "md5sum hello.txt" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "57eae725420bf0075d17f849cc8e75379bea6eb6 hello.txt\n" ] } ], "source": [ "sha1sum hello.txt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### If we alter hello.txt in any way the checksum will be different" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1 Hello, bash\n", "2 Hello, again\n", "3 Hello\n", "4 again\n" ] } ], "source": [ "cat hello.txt" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "md5sum hello.txt > hello.md5" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "a68554400613f5445c13c57907e976ed hello.txt\n" ] } ], "source": [ "cat hello.md5" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [], "source": [ "cat > hello.txt << EOF\n", "1 Hello, bash\n", "2 Hello, again\n", "2 Hello\n", "4 again\n", "EOF" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1 Hello, bash\n", "2 Hello, again\n", "2 Hello\n", "4 again\n" ] } ], "source": [ "cat hello.txt" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "hello.txt: FAILED\n", "md5sum: WARNING: 1 computed checksum did NOT match\n" ] }, { "ename": "", "evalue": "1", "output_type": "error", "traceback": [] } ], "source": [ "md5sum -c hello.md5" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Working with multiple files" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [], "source": [ "md5sum ?.txt > MD5SUM" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [], "source": [ "echo \"ccacc\" > c.txt" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "a.txt: OK\n", "b.txt: OK\n", "c.txt: FAILED\n", "md5sum: WARNING: 1 computed checksum did NOT match\n" ] }, { "ename": "", "evalue": "1", "output_type": "error", "traceback": [] } ], "source": [ "md5sum -c MD5SUM" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exercises" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "1. Create an MD5 checksum for all notebooks (files with extension .ipynb) and store as MD5_CHECKSUM" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "62244c839bf75946704624defd31dc2f R00_Review_Basics.ipynb\n", "d49c2ea6c69d58abefca0bdc74b4945e R00_Review_Basics_Scratch.ipynb\n", "8dced15d1a9b95debd69bd2e26fced51 R01_Data_Manipulation.ipynb\n", "b5c9f4b88d09728c3d4f0422bd9ffd18 R01_Data_Manipulation_Scratch.ipynb\n", "9e09863c38312eec48fe00b82770215b R01_Data_Manipulation_Solutions.ipynb\n", "16fd0a8d9d681974995d8140172c8ef0 R01_Manipulating_Data_In_R.ipynb\n", "87f89f814b13174747026ca668f146d6 R02_Tidying_Data_In_R.ipynb\n", "592d775271c019ac59e82ff7f86f510a R02_Tidying_Data.ipynb\n", "efd0a6fe5a6155b91d1856dd115aa153 R02_Tidying_Data_Solutions.ipynb\n", "54dc64cfcd4d78d970780f858dc7b40f R03_FileIO.ipynb\n", "39531aae4ada2bbd009b54b46119bf89 R04_Unsupervised_Learning.ipynb\n", "0831bd591b1c1cc2df2367c260a39a7c R04_Unsupervised_Learning_Scratch.ipynb\n", "8d9eaf96f9d4535dd322d844f460ebda R05_Unsupervised_Learning_More_Examples.ipynb\n", "a2fe0422524763aa7c84bc0d93d6bb31 R06_Graphics_Overview.ipynb\n", "c01a3e52a658b7ea8f1c09e5ab0a7468 R07_Graphics_Base.ipynb\n", "968d575cbbcdaf939dd690e6e3d13ef7 R08_Graphics_ggplot2.ipynb\n", "c28451b83183c842f1de53511d30180e R09_Graphics_Exercise.ipynb\n", "701e20acca68964c4321c263316f2068 R09_Graphics_Exercise_Solutions.ipynb\n", "5fce58fcf8e1fb4b07b68240d06679fb Unix01_File_And_Directory.ipynb\n", "eb62c94ab276c8d3414e436e3ee0505f Unix01_File_And_Directory_Solutions.ipynb\n", "769ad300f06de14308852deae7b44e97 Unix02_FileIO.ipynb\n", "93110755e331d4ccc384550f8d9ff631 Unix02_FileIO_Solutions.ipynb\n", "66b6a2f6a69c73ee8662a2ac51c20a17 Unix03_File_Storage.ipynb\n", "fd1e66e88ba42d0812dbf76a5c65c972 Unix03_File_Storage_Solutions.ipynb\n", "79d21d0852b2e936095fddb49aa72ee1 Unix04_Text_Manipulation.ipynb\n", "4a5c5af2eea7002938e500eec054f860 Unix04_Text_Manipulation_Solutinos.ipynb\n", "6ccf56814666d43b580cc3abfed152ab Unix05_Variables.ipynb\n", "6ccf56814666d43b580cc3abfed152ab Unix05_Variables_Solutions.ipynb\n", "af15edcf6db6201b09b5ea81046a9cbd Unix06_Bash_Bioinformatics.ipynb\n", "d73b692af61c7614e01e329f0a5eb89a Unix07_Capstone_Exercise.ipynb\n", "d2c1ad113a4be50fc17c15bb17159975 Unix07_Capstone_Exercise_Solutions.ipynb\n", "cbe7eb9998cb549acd3ac3b0824407ce Unix_Appendix01_Regular_Expressions.ipynb\n", "d0798a03d71e02b5aa8093ca883a5239 Unix_Appendix02_Review.ipynb\n" ] } ], "source": [ "md5sum *ipynb > MD5_CHECKSUM\n", "cat MD5_CHECKSUM" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "2. Archive all notebooks (files with extension .ipynb) in this directory ANd the checksum file as notebooks.tar.gz." ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "R00_Review_Basics.ipynb\n", "R00_Review_Basics_Scratch.ipynb\n", "R01_Data_Manipulation.ipynb\n", "R01_Data_Manipulation_Scratch.ipynb\n", "R01_Data_Manipulation_Solutions.ipynb\n", "R01_Manipulating_Data_In_R.ipynb\n", "R02_Tidying_Data_In_R.ipynb\n", "R02_Tidying_Data.ipynb\n", "R02_Tidying_Data_Solutions.ipynb\n", "R03_FileIO.ipynb\n", "R04_Unsupervised_Learning.ipynb\n", "R04_Unsupervised_Learning_Scratch.ipynb\n", "R05_Unsupervised_Learning_More_Examples.ipynb\n", "R06_Graphics_Overview.ipynb\n", "R07_Graphics_Base.ipynb\n", "R08_Graphics_ggplot2.ipynb\n", "R09_Graphics_Exercise.ipynb\n", "R09_Graphics_Exercise_Solutions.ipynb\n", "Unix01_File_And_Directory.ipynb\n", "Unix01_File_And_Directory_Solutions.ipynb\n", "Unix02_FileIO.ipynb\n", "Unix02_FileIO_Solutions.ipynb\n", "Unix03_File_Storage.ipynb\n", "Unix03_File_Storage_Solutions.ipynb\n", "Unix04_Text_Manipulation.ipynb\n", "Unix04_Text_Manipulation_Solutinos.ipynb\n", "Unix05_Variables.ipynb\n", "Unix05_Variables_Solutions.ipynb\n", "Unix06_Bash_Bioinformatics.ipynb\n", "Unix07_Capstone_Exercise.ipynb\n", "Unix07_Capstone_Exercise_Solutions.ipynb\n", "Unix_Appendix01_Regular_Expressions.ipynb\n", "Unix_Appendix02_Review.ipynb\n", "MD5_CHECKSUM\n" ] } ], "source": [ "tar -czvf notebooks.tar.gz *ipynb MD5_CHECKSUM" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "3. Delete all (files with extension .ipynb)." ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [], "source": [ "rm *ipynb" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "4. Recover the notebooks from the archived file, and check that the files have not changed during the process of tarring and untarring." ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "R00_Review_Basics.ipynb\n", "R00_Review_Basics_Scratch.ipynb\n", "R01_Data_Manipulation.ipynb\n", "R01_Data_Manipulation_Scratch.ipynb\n", "R01_Data_Manipulation_Solutions.ipynb\n", "R01_Manipulating_Data_In_R.ipynb\n", "R02_Tidying_Data_In_R.ipynb\n", "R02_Tidying_Data.ipynb\n", "R02_Tidying_Data_Solutions.ipynb\n", "R03_FileIO.ipynb\n", "R04_Unsupervised_Learning.ipynb\n", "R04_Unsupervised_Learning_Scratch.ipynb\n", "R05_Unsupervised_Learning_More_Examples.ipynb\n", "R06_Graphics_Overview.ipynb\n", "R07_Graphics_Base.ipynb\n", "R08_Graphics_ggplot2.ipynb\n", "R09_Graphics_Exercise.ipynb\n", "R09_Graphics_Exercise_Solutions.ipynb\n", "Unix01_File_And_Directory.ipynb\n", "Unix01_File_And_Directory_Solutions.ipynb\n", "Unix02_FileIO.ipynb\n", "Unix02_FileIO_Solutions.ipynb\n", "Unix03_File_Storage.ipynb\n", "Unix03_File_Storage_Solutions.ipynb\n", "Unix04_Text_Manipulation.ipynb\n", "Unix04_Text_Manipulation_Solutinos.ipynb\n", "Unix05_Variables.ipynb\n", "Unix05_Variables_Solutions.ipynb\n", "Unix06_Bash_Bioinformatics.ipynb\n", "Unix07_Capstone_Exercise.ipynb\n", "Unix07_Capstone_Exercise_Solutions.ipynb\n", "Unix_Appendix01_Regular_Expressions.ipynb\n", "Unix_Appendix02_Review.ipynb\n", "MD5_CHECKSUM\n" ] } ], "source": [ "tar -xzvf notebooks.tar.gz" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "R00_Review_Basics.ipynb: OK\n", "R00_Review_Basics_Scratch.ipynb: OK\n", "R01_Data_Manipulation.ipynb: OK\n", "R01_Data_Manipulation_Scratch.ipynb: OK\n", "R01_Data_Manipulation_Solutions.ipynb: OK\n", "R01_Manipulating_Data_In_R.ipynb: OK\n", "R02_Tidying_Data_In_R.ipynb: OK\n", "R02_Tidying_Data.ipynb: OK\n", "R02_Tidying_Data_Solutions.ipynb: OK\n", "R03_FileIO.ipynb: OK\n", "R04_Unsupervised_Learning.ipynb: OK\n", "R04_Unsupervised_Learning_Scratch.ipynb: OK\n", "R05_Unsupervised_Learning_More_Examples.ipynb: OK\n", "R06_Graphics_Overview.ipynb: OK\n", "R07_Graphics_Base.ipynb: OK\n", "R08_Graphics_ggplot2.ipynb: OK\n", "R09_Graphics_Exercise.ipynb: OK\n", "R09_Graphics_Exercise_Solutions.ipynb: OK\n", "Unix01_File_And_Directory.ipynb: OK\n", "Unix01_File_And_Directory_Solutions.ipynb: OK\n", "Unix02_FileIO.ipynb: OK\n", "Unix02_FileIO_Solutions.ipynb: OK\n", "Unix03_File_Storage.ipynb: OK\n", "Unix03_File_Storage_Solutions.ipynb: OK\n", "Unix04_Text_Manipulation.ipynb: OK\n", "Unix04_Text_Manipulation_Solutinos.ipynb: OK\n", "Unix05_Variables.ipynb: OK\n", "Unix05_Variables_Solutions.ipynb: OK\n", "Unix06_Bash_Bioinformatics.ipynb: OK\n", "Unix07_Capstone_Exercise.ipynb: OK\n", "Unix07_Capstone_Exercise_Solutions.ipynb: OK\n", "Unix_Appendix01_Regular_Expressions.ipynb: OK\n", "Unix_Appendix02_Review.ipynb: OK\n" ] } ], "source": [ "md5sum -c MD5_CHECKSUM" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Bash", "language": "bash", "name": "bash" }, "language_info": { "codemirror_mode": "shell", "file_extension": ".sh", "mimetype": "text/x-sh", "name": "bash" } }, "nbformat": 4, "nbformat_minor": 2 }