Cara kerja filesystem, direktori sebenarnya bukan folder yang berisi file tetapi direktori adalah file yang berisi inode pointer ke file “child” yang terhubung dengannya. Artinya, dari perspektif sistem file, file adalah file, tetapi direktori hanyalah file yang berisi daftar file yang terhubung.
Jadi dari perspektif baris perintah, lakukan ini:
$ cp dir1 copyDir1
Pada dasarnya berarti menyalin nama file, dir1
ke file baru bernama copyDir1
. Dan sejauh menyangkut sistem file, dir1
tetap saja file; sebenarnya itu adalah "direktori" hanya akan terlihat ketika filesystem benar-benar memeriksa dir1
untuk melihat apa tumpukan bit sebenarnya.
The -r
flag mengatakan sistem file untuk gulungan rekursif bawah file / pohon direktori dan menyalin setiap & semua isi yang mungkin menjadi “anak” dari file tersebut ke tempat baru.
Sekarang mengapa itu mungkin tampak berlebihan atau berlebihan, ini benar-benar datang ke metode historis berurusan dengan sistem file. Serta menciptakan sistem yang aman dari semua jenis kesalahan terkait pengguna; disengaja serta disengaja.
Artinya, katakanlah Anda memiliki ~/bin
file di direktori home yang ingin Anda salin tetapi tidak sengaja meninggalkan ~
— karena Anda adalah manusia dan melakukan kesalahan — jadi /bin
seperti ini:
cp /bin/ ~/copy_of_bin
Dengan "jaring pengaman" /bin
sebagai direktori yang dipadukan dengan kebutuhan akan -r
flag, Anda akan terhindar dari menyalin secara tidak sengaja seluruh akar biner dari sistem yang Anda gunakan pada direktori home Anda. Jika jaring pengaman itu tidak ada, bencana kecil - atau mungkin besar - akan terjadi.
Logikanya di sini adalah bahwa pada hari-hari pra-GUI (antarmuka pengguna grafis) konvensi logis / perilaku perlu diatur untuk menghindari pengguna membuat kecelakaan yang berpotensi membunuh sistem. Dan menggunakan -r
bendera sekarang adalah salah satunya.
Jika itu tampak berlebihan, maka tidak perlu melihat lebih jauh dari sistem GUI modern yang dapat ditempatkan di atas sistem file Linux. GUI mengatasi masalah pengguna dasar seperti ini dengan memungkinkan orang menyeret dan menjatuhkan file dan direktori dengan mudah.
Tetapi dalam kasus bidang antarmuka berbasis teks, banyak "pengalaman pengguna" dalam dunia itu pada dasarnya hanya benjolan jalan yang logis dan berbasis hueristik yang membantu menjaga pengguna agar tetap terkendali sehingga potensi bencana dapat dihindari.
Demikian pula ini sebabnya sistem file Linux / Unix tidak memiliki 777
izin dan sudo
hak yang ditetapkan secara default dan bagaimana administrator sistem nyata meringis ketika pengguna menetapkan 777
izin atau memberikan sudo
hak kepada semua orang . Ini adalah hal-hal dasar yang dilakukan seseorang untuk memastikan sistem stabil dan "bukti pengguna" mungkin; siapa pun yang terburu-buru untuk memutus konvensi tersebut kemungkinan besar akan menyebabkan kerusakan pada sistem mereka tanpa menyadarinya.
INFO TAMBAHAN: Jawaban lain di sini di situs Unix Stack Exchange memberikan penjelasan yang baik tentang mengapa salinan direktori yang tidak rekursif bermasalah; penekanan adalah milikku.
Nah, tanpa tanda -R, itu hanya mungkin untuk menyalin file, karena itu agak tidak biasa bahwa seseorang ingin menyalin secara non-rekursif direktori: Salinan non-rekursif hanya akan menghasilkan nama kedua untuk direktori, menunjuk langsung ke struktur direktori yang sama.
Karena itu jarang yang diinginkan orang, dan sebenarnya ada program terpisah yang melakukan ini (ln), salinan direktori non-rekursif tidak diperbolehkan.
Jadi, jika sebuah direktori hanyalah sebuah file dengan item inode di dalamnya, membuat salinan langsung dari file itu hanya akan setara dengan cara kerja tautan keras. Yang tidak diinginkan siapa pun.