Daftar Isi
Alat dan tips untuk mengelola data biner dan teks pada sistem Debian dijelaskan.
![]() |
Awas |
---|---|
Akses tulis yang tidak terkoordinasi ke perangkat dan berkas yang diakses
secara aktif dari berbagai proses tidak boleh dilakukan untuk menghindari
kondisi race. Mekanisme penguncian berkas menggunakan
|
Keamanan data dan berbagi yang terkontrol memiliki beberapa aspek.
Pembuatan arsip data
Akses penyimpanan jarak jauh
Duplikasi
Pelacakan riwayat modifikasi
Memfasilitasi berbagi data
Pencegahan akses berkas tanpa otorisasi
Deteksi modifikasi berkas tanpa otorisasi
Ini dapat direalisasikan dengan menggunakan beberapa kombinasi alat.
Alat arsip dan kompresi
Alat salin dan sinkronisasi
Sistem berkas jaringan
Media penyimpanan lepasan
Secure shell
Sistem autentikasi
Alat sistem kontrol versi
Alat enkripsi hash dan kriptografi
Berikut adalah ringkasan alat kompresi dan arsip yang tersedia pada sistem Debian.
Tabel 10.1. Daftar alat arsip dan kompresi
paket | popcon | ukuran | ekstensi | perintah | kommen |
---|---|---|---|---|---|
tar
|
V:902, I:999 | 3077 | .tar |
tar (1) |
pengarsip standar (standar de facto) |
cpio
|
V:440, I:998 | 1199 | .cpio |
cpio (1) |
Pengarsipan gaya Unix System V, gunakan dengan find (1) |
binutils
|
V:172, I:629 | 144 | .ar |
ar (1) |
pengarsip untuk pembuatan pustaka statis |
fastjar
|
V:1, I:13 | 183 | .jar |
fastjar (1) |
pengarsip untuk Java (mirip zip) |
pax
|
V:8, I:14 | 170 | .pax |
pax (1) |
pengarsip standar POSIX baru, kompromi antara tar dan
cpio |
gzip
|
V:876, I:999 | 252 | .gz |
gzip (1), zcat (1), … |
Utilitas kompresi GNU LZ77 (standar de facto) |
bzip2
|
V:166, I:970 | 112 | .bz2 |
bzip2 (1), bzcat (1), … |
Utilitas kompresi pengurut
blok Burrows-Wheeler dengan rasio kompresi yang lebih tinggi
daripada gzip (1) (lebih lambat dari
gzip dengan sintaks serupa) |
lzma
|
V:1, I:16 | 149 | .lzma |
lzma (1) |
Utilitas kompresi LZMA dengan rasio kompresi
yang lebih tinggi daripada gzip (1) (usang) |
xz-utils
|
V:360, I:980 | 1203 | .xz |
xz (1), xzdec (1), … |
Utilitas kompresi XZ dengan rasio kompresi yang
lebih tinggi daripada bzip2 (1) (lebih lambat dari
gzip tetapi lebih cepat dari bzip2 ;
pengganti utilitas kompresi LZMA) |
zstd
|
V:193, I:481 | 2158 | .zstd |
zstd (1), zstdcat (1), … |
Zstandard utilitas kompresi lossless cepat |
p7zip
|
V:20, I:463 | 8 | .7z |
7zr (1), p7zip (1) |
Pengarsip berkas 7-Zip dengan rasio kompresi tinggi (kompresi LZMA) |
p7zip-full
|
V:110, I:480 | 12 | .7z |
7z (1), 7za (1) |
Pengarsip berkas 7-Zipdengan rasio kompresi tinggi (kompresi LZMA dan lain-lain) |
lzop
|
V:15, I:142 | 164 | .lzo |
lzop (1) |
Utilitas kompresi LZO dengan kompresi dan
kecepatan dekompresi yang lebih tinggi daripada gzip (1)
(rasio kompresi yang lebih rendah daripada gzip dengan
sintaks serupa) |
zip
|
V:48, I:380 | 616 | .zip |
zip (1) |
InfoZIP: Alat arsip dan kompresi DOS |
unzip
|
V:105, I:771 | 379 | .zip |
unzip (1) |
InfoZIP: Alat pembuka arsip dan dekompresi DOS |
![]() |
Awas |
---|---|
Jangan mengatur variabel " |
Arsip tar
(1) yang di-gzip menggunakan ekstensi berkas
".tgz
" atau ".tar.gz
".
Arsip tar
(1) terkompresi xz menggunakan ekstensi berkas
".txz
" atau ".tar.xz
".
Metode kompresi populer dalam alat FOSS seperti
tar
(1) telah bergerak sebagai berikut:
gzip
→ bzip2
→ xz
cp
(1), scp
(1), dan
tar
(1) mungkin memiliki beberapa batasan untuk berkas
khusus. cpio
(1) adalah yang paling serbaguna.
cpio
(1) dirancang untuk digunakan dengan
find
(1) dan perintah lainnya dan cocok untuk membuat
skrip cadangan karena bagian pemilihan berkas dari skrip dapat diuji secara
independen.
Struktur internal berkas data Libreoffice adalah berkas
".jar
" yang dapat dibuka juga oleh
unzip
.
Alat arsip lintas platform de-facto adalah zip
. Gunakan
sebagai "zip -rX
" untuk mencapai kompatibilitas
maksimum. Gunakan juga opsi "-s
", jika ukuran berkas
maksimum penting.
Berikut adalah ringkasan alat cadangan dan salin sederhana yang tersedia di sistem Debian.
Tabel 10.2. Daftar alat salin dan sinkronisasi
paket | popcon | ukuran | perkakas | fungsi |
---|---|---|---|---|
coreutils
|
V:880, I:999 | 18307 | GNU cp | menyalin berkas dan direktori secara lokal ("-a" untuk rekursif) |
openssh-client
|
V:866, I:996 | 4959 | scp | dari jarak jauh menyalin berkas dan direktori (klien,
"-r " untuk rekursif) |
openssh-server
|
V:730, I:814 | 1804 | sshd | menyalin berkas dan direktori dari jarak jauh (server jarak jauh) |
rsync
|
V:246, I:552 | 781 | Sinkronisasi dan pencadangan jarak jauh 1 arah | |
unison
|
V:3, I:15 | 14 | Sinkronisasi dan pencadangan jarak jauh 2 arah |
Menyalin berkas dengan rsync
(8) menawarkan fitur yang
lebih kaya daripada yang lain.
algoritma delta-transfer yang hanya mengirimkan perbedaan antara berkas sumber dan berkas yang ada di tujuan
algoritma pemeriksaan cepat (secara baku) yang mencari berkas yang telah berubah dalam ukuran atau dalam waktu terakhir dimodifikasi
opsi "--exclude
" dan "--exclude-from
"
yang mirip dengan tar
(1)
Sintaks "garis miring di akhir pada direktori sumber" yang menghindari pembuatan tingkat direktori tambahan di tujuan.
![]() |
Tip |
---|---|
Alat sistem kontrol versi (VCS) Tabel 10.14, “Daftar alat sistem kontrol versi lainnya” dapat berfungsi sebagai alat salinan dan sinkronisasi multi-arah. |
Berikut adalah beberapa cara untuk mengarsipkan dan membuka arsip seluruh
isi direktori "./source
" menggunakan alat yang berbeda.
GNU tar
(1):
$ tar -cvJf archive.tar.xz ./source $ tar -xvJf archive.tar.xz
Atau, dengan berikut.
$ find ./source -xdev -print0 | tar -cvJf archive.tar.xz --null -T -
cpio
(1):
$ find ./source -xdev -print0 | cpio -ov --null > archive.cpio; xz archive.cpio $ zcat archive.cpio.xz | cpio -i
Berikut adalah beberapa cara untuk menyalin seluruh konten direktori
"./source
" menggunakan alat-alat yang berbeda.
Salinan lokal: direktori "./source
" → direktori
"/dest
"
Salinan jarak jauh: direktori "./source
" di host lokal →
direktori "/dest
" di host
"user@host.dom
"
rsync
(8):
# cd ./source; rsync -aHAXSv . /dest # cd ./source; rsync -aHAXSv . user@host.dom:/dest
Anda dapat menggunakan sintaks "garis miring di akhir pada direktori sumber".
# rsync -aHAXSv ./source/ /dest # rsync -aHAXSv ./source/ user@host.dom:/dest
Atau, dengan berikut.
# cd ./source; find . -print0 | rsync -aHAXSv0 --files-from=- . /dest # cd ./source; find . -print0 | rsync -aHAXSv0 --files-from=- . user@host.dom:/dest
GNU cp
(1) dan openSSH scp
(1):
# cd ./source; cp -a . /dest # cd ./source; scp -pr . user@host.dom:/dest
GNU tar
(1):
# (cd ./source && tar cf - . ) | (cd /dest && tar xvfp - ) # (cd ./source && tar cf - . ) | ssh user@host.dom '(cd /dest && tar xvfp - )'
cpio
(1):
# cd ./source; find . -print0 | cpio -pvdm --null --sparse /dest
Anda dapat mengganti ".
" dengan "foo
"
untuk semua contoh yang mengandung ".
" untuk menyalin
berkas dari direktori "./source/foo
" ke direktori
"/dest/foo
".
Anda dapat mengganti ".
" dengan path absolut
"/path/to/source/foo
" untuk semua contoh yang mengandung
".
" untuk membuang " cd./source;
".
Ini menyalin berkas ke lokasi yang berbeda tergantung pada alat yang
digunakan sebagai berikut.
"/dest/foo
": rsync
(8), GNU
cp
(1), dan scp
(1)
"/dest/path/to/source/foo
": GNU
tar
(1), dan cpio
(1)
![]() |
Tip |
---|---|
|
find
(1) digunakan untuk memilih berkas untuk perintah
arsip dan salin (lihat Bagian 10.1.3, “Idiom untuk arsip” dan Bagian 10.1.4, “Idiom untuk menyalin”) atau untuk xargs
(1)
(lihat Bagian 9.4.9, “Mengulangi perintah atas berkas”). Ini
dapat ditingkatkan dengan memakai argumen-argumen perintahnya.
Sintaks dasar find
(1) dapat diringkas sebagai berikut.
Argumen bersyaratnya dievaluasi dari kiri ke kanan.
Evaluasi ini berhenti setelah hasilnya ditentukan.
"OR logis" (ditentukan oleh
"-o
" antara syarat) memiliki prioritas yang lebih rendah
daripada "AND logis" (ditentukan oleh
"-a
" atau nihil antara syarat).
"NOT logis" (ditentukan oleh
"!
" sebelum syarat) memiliki prioritas yang lebih tinggi
daripada "AND logis".
"-prune
" selalu mengembalikan TRUE logis dan, jika itu adalah direktori,
pencarian berkas dihentikan di luar titik ini.
"-name
" mencocokkan basis nama berkas dengan shell glob
(lihat Bagian 1.5.6, “Glob shell”) tetapi juga mencocokkan
".
" awal dengan karakter-karakter meta seperti
"*
" dan "?
". (Fitur POSIX baru)
"-regex
" mencocokkan path lengkap dengan BRE gaya emacs (lihat Bagian 1.6.2, “Ekspresi reguler”) secara baku.
"-size
" cocok dengan berkas berdasarkan ukuran berkas
(nilai didahului dengan "+
" untuk lebih besar, didahului
dengan "-
" untuk lebih kecil)
"-newer
" cocok dengan berkas yang lebih baru dari yang
ditentukan dalam argumennya.
"-print0
" selalu mengembalikan TRUE logis dan mencetak nama berkas lengkap (diakhiri null) pada keluaran standar.
find
(1) sering digunakan dengan gaya idiomatik sebagai
berikut.
# find /path/to \ -xdev -regextype posix-extended \ -type f -regex ".*\.cpio|.*~" -prune -o \ -type d -regex ".*/\.git" -prune -o \ -type f -size +99M -prune -o \ -type f -newer /path/to/timestamp -print0
Ini berarti melakukan tindakan berikut.
Cari semua berkas mulai dari "/path/to
"
Secara global membatasi pencariannya dalam sistem berkas awalnya dan menggunakan ERE (lihat Bagian 1.6.2, “Ekspresi reguler”) sebagai gantinya
Kecualikan berkas yang cocok regex dari ".*\.cpio
" atau
".*~
" dari pencarian dengan berhenti memroses
Kecualikan direktori yang cocok dengan regex ".*/\.git
"
dari pencarian dengan berhenti memroses
Kecualikan berkas yang lebih dari 99 Megabyte (satuan 1048576 byte) dari pencarian dengan berhenti memroses
Cetak nama berkas yang memenuhi kondisi pencarian di atas dan lebih baru
dari "/path/to/timestamp
"
Harap dicatat penggunaan idiomatik "-prune -o
" untuk
mengecualikan berkas dalam contoh di atas.
![]() |
Catatan |
---|---|
Untuk sistem mirip Unix non-Debian, beberapa
opsi mungkin tidak didukung oleh |
Ketika memilih media penyimpanan data komputer untuk arsip data penting, Anda harus berhati-hati tentang keterbatasan mereka. Untuk cadangan data pribadi kecil, saya menggunakan CD-R dan DVD-R oleh perusahaan dengan merek terkenal dan menyimpan di lingkungan yang sejuk, teduh, kering, dan bersih. (Media arsip tape tampaknya populer untuk penggunaan profesional.)
![]() |
Catatan |
---|---|
Brankas tahan api dimaksudkan untuk dokumen kertas. Sebagian besar media penyimpanan data komputer memiliki toleransi suhu yang lebih rendah daripada kertas. Saya biasanya mengandalkan beberapa salinan terenkripsi aman yang disimpan di beberapa lokasi aman. |
Umur penyimpanan optimis dari media arsip yang terlihat di internet (sebagian besar dari info vendor).
100+ tahun : Kertas bebas asam dengan tinta
100 tahun : Penyimpanan optik (CD/DVD, CD/DVD-R)
30 tahun : Penyimpanan magnetik (tape, floppy)
20 tahun : Penyimpanan optik perubahan fase (CD-RW)
Ini tidak memperhitungkan kegagalan mekanis karena penanganan dll.
Siklus tulis optimis dari media arsip yang terlihat di internet (sebagian besar dari informasi vendor).
250.000+ siklus : Harddisk drive
10.000+ siklus : Memori flash
1.000 siklus : CD/DVD-RW
1 siklus : CD/DVD-R, kertas
![]() |
Perhatian |
---|---|
Angka masa penyimpanan dan siklus penulisan di sini tidak boleh digunakan untuk keputusan tentang penyimpanan data penting apa pun. Silakan berkonsultasi dengan informasi produk spesifik yang disediakan oleh produsen. |
![]() |
Tip |
---|---|
Karena CD/DVD-R dan kertas hanya memiliki 1 siklus penulisan, mereka secara inheren mencegah kehilangan data yang tidak disengaja dengan menimpa. Ini adalah keuntungan! |
![]() |
Tip |
---|---|
Jika Anda memerlukan cadangan data dalam jumlah besar dan sering, hard disk pada host jarak jauh yang dihubungkan oleh koneksi jaringan cepat, mungkin satu-satunya pilihan yang realistis. |
Perangkat penyimpanan lepasan mungkin salah satu dari yang berikut ini.
Kamera digital
Pemutar musik digital
Mereka dapat dihubungkan melalui salah satu dari yang berikut.
Lingkungan desktop modern seperti GNOME dan KDE dapat mengait perangkat
lepasan ini secara otomatis tanpa entri "/etc/fstab
" yang
cocok.
![]() |
Tip |
---|---|
Perangkat yang dikait otomatis mungkin memiliki opsi mount
" |
![]() |
Tip |
---|---|
Mengait otomatis di bawah lingkungan desktop modern terjadi hanya ketika
perangkat media lepasan tidak terdaftar di " |
Titik kait di bawah lingkungan desktop modern dipilih sebagai
"/media/username/disk_label
" yang
dapat disesuaikan dengan hal-hal berikut.
mlabel
(1) untuk sistem berkas FAT
genisoimage
(1) dengan opsi "-V
" untuk
sistem berkas ISO9660
tune2fs
(1) dengan opsi "-L
" untuk
sistem berkas ext2/ext3/ext4
![]() |
Tip |
---|---|
Pilihan pengodean mungkin perlu disediakan sebagai opsi kait (lihat Bagian 8.1.3, “Pengodean nama berkas”). |
![]() |
Tip |
---|---|
Penggunaan menu GUI untuk melepas kait sistem berkas dapat menghapus node
perangkat yang dihasilkan secara dinamis seperti
" |
Saat berbagi data dengan sistem lain melalui perangkat penyimpanan lepasan, Anda harus memformatnya dengan sistem berkas umum yang didukung oleh kedua sistem. Berikut adalah daftar pilihan sistem berkas.
Tabel 10.3. Daftar pilihan sistem berkas untuk perangkat penyimpanan lepasan dengan skenario penggunaan yang khas
nama sistem berkas | skenario penggunaan tipikal |
---|---|
FAT12 | berbagi data lintas platform pada floppy disk (<32MiB) |
FAT16 | berbagi data lintas platform pada perangkat seperti hard disk kecil (<2GiB) |
FAT32 | berbagi data lintas platform pada perangkat seperti hard disk besar (<8TiB, didukung oleh yang lebih baru daripada MS Windows95 OSR2) |
exFAT | berbagi data lintas platform pada perangkat seperti hard disk besar (<512TiB, didukung oleh WindowsXP, Mac OS X Snow Leopard 10.6.5, dan kernel Linux sejak rilis 5.4) |
NTFS | berbagi data lintas platform pada perangkat seperti hard disk besar (didukung secara native pada MS Windows NT dan versi yang lebih baru, dan didukung oleh NTFS-3G melalui FUSE di Linux) |
ISO9660 | berbagi lintas platform data statis pada CD-R dan DVD+/-R |
UDF | penulisan data inkremental pada CD-R dan DVD+/-R (baru) |
MINIX | penyimpanan data berkas unix yang efisien pada floppy disk |
ext2 | berbagi data pada perangkat seperti hard disk dengan sistem Linux yang lebih lama |
ext3 | berbagi data pada perangkat seperti hard disk dengan sistem Linux yang lebih lama |
ext4 | berbagi data pada perangkat seperti hard disk dengan sistem Linux saat ini |
btrfs | berbagi data pada perangkat seperti hard disk dengan sistem Linux saat ini dengan snapshot hanya-baca |
![]() |
Tip |
---|---|
Lihat Bagian 9.9.1, “Enkripsi disk lepasan dengan dm-crypt/LUKS” untuk berbagi data lintas platform menggunakan enkripsi tingkat perangkat. |
Sistem berkas FAT didukung oleh hampir semua sistem operasi modern dan cukup berguna untuk tujuan pertukaran data melalui media lepasan seperti hard disk.
Saat memformat perangkat lepasan seperti hard disk untuk berbagi data lintas platform dengan sistem berkas FAT, berikut ini harus menjadi pilihan yang aman.
Memartisi mereka dengan fdisk
(8),
cfdisk
(8), atau parted
(8) (lihat Bagian 9.6.2, “Konfigurasi partisi disk”) menjadi partisi primer tunggal
dan untuk menandainya sebagai berikut.
Ketik "6" untuk FAT16 bagi media yang kurang dari 2GB.
Ketik "c" untuk FAT32 (LBA) untuk media yang lebih besar.
Memformat partisi utama dengan mkfs.vfat
(8) dengan yang
berikut.
Hanya nama perangkatnya, misalnya "/dev/sda1
" untuk FAT16
Opsi eksplisit dan nama perangkatnya, misalnya "-F 32
/dev/sda1
" untuk FAT32
Saat menggunakan sistem berkas FAT atau ISO9660 untuk berbagi data, berikut ini harus menjadi pertimbangan yang aman.
Pengarsipan berkas ke dalam berkas arsip terlebih dahulu menggunakan
tar
(1), atau cpio
(1) untuk
mempertahankan nama berkas yang panjang, taut simbolis, izin berkas Unix
asli dan informasi pemilik.
Memecah berkas arsip menjadi potongan kurang dari 2 GiB dengan perintah
split
(1) untuk melindunginya dari batasan ukuran berkas.
Mengenkripsi berkas arsip untuk mengamankan isinya dari akses yang tidak sah.
![]() |
Catatan |
---|---|
Untuk sistem berkas FAT dengan desainnya, ukuran berkas maksimum adalah
|
![]() |
Catatan |
---|---|
Microsoft sendiri tidak merekomendasikan untuk menggunakan FAT bagi drive atau partisi lebih dari 200 MB. Microsoft menyoroti kekurangannya seperti penggunaan ruang disk yang tidak efisien dalam "Overview of FAT, HPFS, and NTFS File Systems" mereka. Tentu saja, kita biasanya harus menggunakan sistem berkas ext4 untuk Linux. |
![]() |
Tip |
---|---|
Untuk informasi lebih lanjut tentang sistem berkas dan mengakses sistem berkas, silakan baca Filesystems HOWTO". |
Saat berbagi data dengan sistem lain melalui jaringan, Anda harus menggunakan layanan umum. Berikut adalah beberapa petunjuk.
Tabel 10.4. Daftar layanan jaringan yang akan dipilih dengan skenario penggunaan umum
layanan jaringan | deskripsi skenario penggunaan umum |
---|---|
Sistem berkas dikait jaringan SMB/CIFS dengan Samba | berbagi berkas melalui "Microsoft Windows Network", lihat
smb.conf (5) dan HOWTO dan Panduan Acuan Resmi Samba
3.x.x atau paket samba-doc |
Sistem berkas dikait jaringan NFS dengan kernel Linux | berbagi berkas melalui "Unix /Linux Network", lihat
exports (5) dan Linux
NFS-HOWTO |
Layanan HTTP | berbagi berkas antara server web/klien |
Layanan HTTPS | berbagi berkas antara server web/klien dengan Secure Sockets Layer (SSL) terenkripsi atau Transport Layer Security (TLS) |
Layanan FTP | berbagi berkas antara server/klien FTP |
Meskipun sistem berkas ini dikait melalui jaringan dan metode transfer berkas melalui jaringan cukup nyaman untuk berbagi data, ini mungkin tidak aman. Koneksi jaringan mereka harus diamankan oleh yang berikut.
Lihat juga Bagian 6.5, “Server aplikasi jaringan lainnya” dan Bagian 6.6, “Klien aplikasi jaringan lainnya”.
Kita semua tahu bahwa komputer gagal suatu saat atau kesalahan manusia menyebabkan kerusakan sistem dan data. Operasi pencadangan dan pemulihan adalah bagian penting dari administrasi sistem yang sukses. Semua mode kegagalan yang mungkin menimpa Anda suatu hari nanti.
![]() |
Tip |
---|---|
Jaga sistem cadangan Anda sederhana dan seringlah mencadangkan sistem Andag. Memiliki data cadangan lebih penting daripada seberapa baik metode cadangan Anda secara teknis. |
Ada 3 faktor kunci yang menentukan kebijakan pencadangan dan pemulihan yang sebenarnya.
Mengetahui apa yang harus dicadangkan dan dipulihkan.
Berkas data yang langsung dibuat oleh Anda: data dalam
"~/
"
Berkas data yang dibuat oleh aplikasi yang digunakan oleh Anda: data dalam
"/var/
" (kecuali "/var/cache/
",
"/var/run/
", dan "/var/tmp/
")
Berkas konfigurasi sistem: data dalam "/etc/
"
Program lokal: data dalam "/usr/local/
" atau
"/opt/
"
Informasi instalasi sistem: memo dalam teks polos pada langkah-langkah kunci (partisi, …)
Kumpulan data yang terbukti: dikonfirmasi oleh operasi pemulihan eksperimental sebelumnya
Pekerjaan cron sebagai proses pengguna: berkas di direktori
"/var/spool/cron/crontabs
" dan memulai ulang
cron
(8). Lihat Bagian 9.4.14, “Menjadwalkan tugas secara teratur” untuk cron
(8) dan
crontab
(1).
Pekerjaan pengatur waktu sistem sebagai proses pengguna: berkas di direktori
"~/.config/systemd/user
". Lihat
systemd.timer
(5) dan
systemd.service
(5).
Memulai otomatis pekerjaan sebagai proses pengguna: berkas di direktori
"~/.config/autostart
". Lihat Spesifikasi Autostart Aplikasi
Desktop.
Mengetahui cara membuat cadangan dan memulihkan.
Penyimpanan data yang aman: perlindungan dari penimpaan dan kegagalan sistem
Pencadangan yang sering: cadangan terjadwal
Cadangan redundan: mirroring data
Proses fool proof: pencadangan dengan perintah tunggal yang mudah
Menilai risiko dan biaya yang terlibat.
Risiko data saat hilang
Data harus setidaknya pada partisi disk yang berbeda, sebaiknya pada disk dan mesin yang berbeda agar bertahan atas korupsi sistem berkas. Data penting paling baik disimpan pada sistem berkas hanya baca. [4]
Risiko data saat bocor
Data identitas sensitif seperti
"/etc/ssh/ssh_host_*_key
",
"~/.gnupg/*
", "~/.ssh/*
",
"~/.local/share/keyrings/*
",
"/etc/passwd
", "/etc/shadow
",
"popularity-contest.conf
",
"/etc/ppp/pap-secrets
", and
"/etc/exim4/passwd.client
" harus dicadangkan maupun
dienkripsi. [5] (Lihat Bagian 9.9, “Tips enkripsi data”.)
Jangan pernah menanam kata sandi login sistem atau frasa sandi dekripsi dalam skrip apa pun bahkan pada sistem terpercaya apa pun. (Lihat Bagian 10.3.6, “Ring kunci kata sandi”.)
Mode kegagalan dan kemungkinannya
Perangkat keras (terutama HDD) akan rusak
Sistem berkas mungkin terkorupsi dan data di dalamnya mungkin hilang
Sistem penyimpanan jarak jauh tidak dapat dipercaya untuk pelanggaran keamanan
Perlindungan kata sandi yang lemah dapat dengan mudah dikompromikan
Sistem izin berkas mungkin terkompromi
Sumber daya yang diperlukan untuk membuat cadangan: manusia, perangkat keras, perangkat lunak, …
Pencadangan terjadwal otomatis dengan pekerjaan cron atau pekerjaan timer systemd
![]() |
Tip |
---|---|
Anda dapat memulihkan data konfigurasi debconf dengan
" |
![]() |
Catatan |
---|---|
Jangan mencadangkan konten sistem berkas pseudo yang ditemukan pada
|
![]() |
Catatan |
---|---|
Anda mungkin ingin menghentikan beberapa daemon aplikasi seperti MTA (lihat Bagian 6.2.4, “Agen transportasi surat (mail transport agent/MTA)”) saat mencadangkan data. |
Berikut adalah daftar keluarga utilitas pencadangan terkemuka yang tersedia di sistem Debian.
Tabel 10.5. Daftar utilitas keluarga pencadangan
paket | popcon | ukuran | deskripsi |
---|---|---|---|
bacula-common
|
V:8, I:10 | 2305 | Bacula: pencadangan jaringan, pemulihan, dan verifikasi - berkas dukungan umum |
bacula-client
|
V:0, I:2 | 178 | Bacula: pencadangan jaringan, pemulihan, dan verifikasi - meta-paket klien |
bacula-console
|
V:0, I:3 | 112 | Bacula: pencadangan jaringan, pemulihan, dan verifikasi - konsol teks |
bacula-server
|
I:0 | 178 | Bacula: pencadangan jaringan, pemulihan, dan verifikasi - meta-paket server |
amanda-common
|
V:0, I:2 | 9897 | Amanda: Advanced Maryland Automatic Network Disk Archiver (Pustaka) |
amanda-client
|
V:0, I:2 | 1092 | Amanda: Advanced Maryland Automatic Network Disk Archiver (Klien) |
amanda-server
|
V:0, I:0 | 1077 | Amanda: Advanced Maryland Automatic Network Disk Archiver (Server) |
backuppc
|
V:2, I:2 | 3178 | BackupPC adalah sistem kinerja tinggi, tingkat enterprise untuk mencadangkan PC (berbasis disk) |
duplicity
|
V:30, I:50 | 1973 | cadangan (jarak jauh) inkremental |
deja-dup
|
V:28, I:44 | 4992 | GUI frontend for duplicity |
borgbackup
|
V:11, I:20 | 3301 | (remote) deduplicating backup |
borgmatic
|
V:2, I:3 | 509 | borgbackup helper |
rdiff-backup
|
V:4, I:10 | 1203 | cadangan (jarak jauh) inkremental |
restic
|
V:2, I:6 | 21385 | cadangan (jarak jauh) inkremental |
backupninja
|
V:2, I:3 | 360 | sistem meta-backup ringan dan dapat diperluas |
flexbackup
|
V:0, I:0 | 243 | cadangan (jarak jauh) inkremental |
slbackup
|
V:0, I:0 | 151 | cadangan (jarak jauh) inkremental |
backup-manager
|
V:0, I:1 | 566 | alat pencadangan baris perintah |
backup2l
|
V:0, I:0 | 115 | alat cadangan/pemulihan pemeliharaan rendah untuk media yang dapat dikait (berbasis disk) |
Alat cadangan memiliki fokus khusus mereka.
Mondo Rescue adalah sistem pencadangan untuk memfasilitasi pemulihan sistem lengkap dengan cepat dari CD/DVD cadangan dll. tanpa melalui proses instalasi sistem normal.
Bacula, Amanda, dan BackupPC adalah utilitas keluarga pencadangan berfitur lengkap yang berfokus pada cadangan reguler melalui jaringan.
Duplicity, and Borg are simpler backup utilities for typical workstations.
For a personal workstation, full featured backup suite utilities designed for the server environment may not serve well. At the same time, existing backup utilities for workstations may have some shortcomings.
Here are some tips to make backup easier with minimal user efforts. These techniques may be used with any backup utilities.
For demonstration purpose, let's assume the primary user and group name to
be penguin
and create a backup and snapshot script
example "/usr/local/bin/bkss.sh
" as:
#!/bin/sh -e SRC="$1" # source data path DSTFS="$2" # backup destination filesystem path DSTSV="$3" # backup destination subvolume name DSTSS="${DSTFS}/${DSTSV}-snapshot" # snapshot destination path if [ "$(stat -f -c %T "$DSTFS")" != "btrfs" ]; then echo "E: $DESTFS needs to be formatted to btrfs" >&2 ; exit 1 fi MSGID=$(notify-send -p "bkup.sh $DSTSV" "in progress ...") if [ ! -d "$DSTFS/$DSTSV" ]; then btrfs subvolume create "$DSTFS/$DSTSV" mkdir -p "$DSTSS" fi rsync -aHxS --delete --mkpath "${SRC}/" "${DSTFS}/${DSTSV}" btrfs subvolume snapshot -r "${DSTFS}/${DSTSV}" ${DSTSS}/$(date -u --iso=min) notify-send -r "$MSGID" "bkup.sh $DSTSV" "finished!"
Here, only the basic tool rsync
(1) is used to facilitate
system backup and the storage space is efficiently used by Btrfs.
![]() |
Tip |
---|---|
FYI: This author uses his own similar shell script "bss: Btrfs Subvolume Snapshot Utility" for his workstation. |
Here is an example to setup the single GUI click backup.
Prepare a USB storage device to be used for backup.
Format a USB storage device with one partition in btrfs with its label name
as "BKUP
". This can be encrypted (see Bagian 9.9.1, “Enkripsi disk lepasan dengan dm-crypt/LUKS”).
Plug this in to your system. The desktop system should automatically mount
it as "/media/penguin/BKUP
".
Execute "sudo chown penguin:penguin /media/penguin/BKUP
"
to make it writable by the user.
Create "~/.local/share/applications/BKUP.desktop
"
following techniques written in Bagian 9.4.10, “Memulai program dari GUI” as:
[Desktop Entry] Name=bkss Comment=Backup and snapshot of ~/Documents Exec=/usr/local/bin/bkss.sh /home/penguin/Documents /media/penguin/BKUP Documents Type=Application
For each GUI click, your data is backed up from
"~/Documents
" to a USB storage device and a read-only
snapshot is created.
Here is an example to setup for the automatic backup triggered by the mount event.
Prepare a USB storage device to be used for backup as in Bagian 10.2.3.1, “GUI backup”.
Create a systemd service unit file
"~/.config/systemd/user/back-BKUP.service
" as:
[Unit] Description=USB Disk backup Requires=media-%u-BKUP.mount After=media-%u-BKUP.mount [Service] ExecStart=/usr/local/bin/bkss.sh %h/Documents /media/%u/BKUP Documents StandardOutput=append:%h/.cache/systemd-snap.log StandardError=append:%h/.cache/systemd-snap.log [Install] WantedBy=media-%u-BKUP.mount
Fungsikan konfigurasi unit systemd ini dengan yang berikut:
$ systemctl --user enable bkup-BKUP.service
For each mount event, your data is backed up from
"~/Documents
" to a USB storage device and a read-only
snapshot is created.
Here, names of systemd mount units that systemd currently has in memory can
be asked to the service manager of the calling user with "systemctl
--user list-units --type=mount
".
Here is an example to setup for the automatic backup triggered by the timer event.
Prepare a USB storage device to be used for backup as in Bagian 10.2.3.1, “GUI backup”.
Create a systemd timer unit file
"~/.config/systemd/user/snap-Documents.timer
" as:
[Unit] Description=Run btrfs subvolume snapshot on timer Documentation=man:btrfs(1) [Timer] OnStartupSec=30 OnUnitInactiveSec=900 [Install] WantedBy=timers.target
Create a systemd service unit file
"~/.config/systemd/user/snap-Documents.service
" as:
[Unit] Description=Run btrfs subvolume snapshot Documentation=man:btrfs(1) [Service] Type=oneshot Nice=15 ExecStart=/usr/local/bin/bkss.sh %h/Documents /media/%u/BKUP Documents IOSchedulingClass=idle CPUSchedulingPolicy=idle StandardOutput=append:%h/.cache/systemd-snap.log StandardError=append:%h/.cache/systemd-snap.log
Fungsikan konfigurasi unit systemd ini dengan yang berikut:
$ systemctl --user enable snap-Documents.timer
For each timer event, your data is backed up from
"~/Documents
" to a USB storage device and a read-only
snapshot is created.
Here, names of systemd timer user units that systemd currently has in memory
can be asked to the service manager of the calling user with
"systemctl --user list-units --type=timer
".
For the modern desktop system, this systemd approach can offer more fine
grained control than the traditional Unix ones using
at
(1), cron
(8), or
anacron
(8).
Infrastruktur keamanan data disediakan oleh kombinasi alat enkripsi data, alat message digest, dan alat tanda tangan.
Tabel 10.6. Daftar alat infrastruktur keamanan data
paket | popcon | ukuran | perintah | deskripsi |
---|---|---|---|---|
gnupg
|
V:554, I:906 | 885 | gpg (1) |
GNU Privacy Guard - Enkripsi OpenPGP dan alat penandatanganan |
gpgv
|
V:893, I:999 | 922 | gpgv (1) |
GNU Privacy Guard - alat verifikasi tanda tangan |
paperkey
|
V:1, I:14 | 58 | paperkey (1) |
mengekstrak hanya informasi rahasia dari kunci rahasia OpenPGP |
cryptsetup
|
V:19, I:79 | 417 | cryptsetup (8), … |
utilitas untuk enkripsi perangkat blok dm-crypt yang mendukung LUKS |
coreutils
|
V:880, I:999 | 18307 | md5sum (1) |
menghitung dan memeriksa digest pesan MD5 |
coreutils
|
V:880, I:999 | 18307 | sha1sum (1) |
menghitung dan memeriksa digest pesan SHA1 |
openssl
|
V:841, I:995 | 2111 | openssl (1ssl) |
menghitung pesan digest dengan "openssl dgst " (OpenSSL) |
libsecret-tools
|
V:0, I:10 | 41 | secret-tool (1) |
menyimpan dan mengambil kata sandi (CLI) |
seahorse
|
V:80, I:269 | 7987 | seahorse (1) |
alat manajemen kunci (GNOME) |
Lihat Bagian 9.9, “Tips enkripsi data” pada dm-crypt dan fscrypt yang menerapkan infrastruktur enkripsi data otomatis melalui modul kernel Linux.
Berikut adalah perintah GNU Privacy Guard untuk manajemen kunci dasar.
Tabel 10.7. Daftar perintah GNU Privacy Guard untuk manajemen kunci
perintah | deskripsi |
---|---|
gpg --gen-key |
membuat suatu kunci baru |
gpg --gen-revoke ID_pengguna_saya |
menghasilkan kunci pencabutan untuk ID_pengguna_saya |
gpg --edit-key ID_pengguna |
menyunting kunci secara interaktif, "help" untuk bantuan |
gpg -o berkas --export |
mengekspor semua kunci ke berkas |
gpg --import berkas |
mengimpor semua kunci dari berkas |
gpg --send-keys ID_pengguna |
mengirim kunci user_ID ke keyserver |
gpg --recv-keys ID_pengguna |
terima kunci user_ID dari keyserver |
gpg --list-keys ID_pengguna |
daftar kunci dari ID_pengguna |
gpg --list-sigs ID_pengguna |
daftar ttd. dari ID_pengguna |
gpg --check-sigs ID_pengguna |
periksa ttd. dari ID_pengguna |
gpg --fingerprint ID_pengguna |
periksa sidik jari ID_pengguna |
gpg --refresh-keys |
memperbarui keyring lokal |
Berikut adalah arti dari kode kepercayaan.
Tabel 10.8. Daftar arti kode kepercayaan
kode | deskripsi kepercayaan |
---|---|
- |
tidak ada kepercayaan pemilik yang ditugaskan / belum dihitung |
e |
perhitungan kepercayaan gagal |
q |
tidak cukup informasi untuk perhitungan |
n |
jangan pernah mempercayai kunci ini |
m |
dipercaya secara terbatas |
f |
dipercaya sepenuhnya |
u |
dipercaya setinggi-tingginya |
Yang berikut ini mengunggah kunci saya "1DD8D791
" ke
keyserver populer "hkp://keys.gnupg.net
".
$ gpg --keyserver hkp://keys.gnupg.net --send-keys 1DD8D791
Keyserver baku yang baik diatur dalam "~/.gnupg/gpg.conf
"
(atau lokasi lama "~/.gnupg/options
") berisi hal berikut.
keyserver hkp://keys.gnupg.net
Yang berikut ini mendapatkan kunci yang tidak diketahui dari keyserver.
$ gpg --list-sigs --with-colons | grep '^sig.*\[User ID not found\]' |\ cut -d ':' -f 5| sort | uniq | xargs gpg --recv-keys
Ada bug di OpenPGP Public Key
Server (pra-versi 0.9.6) yang merusak kunci dengan lebih dari 2
sub-kunci. Paket gnupg
(>1.2.1-2) yang lebih baru
dapat menangani subkunci yang rusak ini. Lihat gpg
(1) di
bawah opsi "--repair-pks-subkey-bug
".
Berikut adalah contoh untuk menggunakan perintah GNU Privacy Guard pada berkas.
Tabel 10.9. Daftar perintah GNU Privacy Guard pada berkas
perintah | deskripsi |
---|---|
gpg -a -s berkas |
menandatangani berkas ke file.asc berlapis ASCII |
gpg --armor --sign file |
, , |
gpg --clearsign file |
tandatangani pesan dengan clear-sign |
gpg --clearsign berkas|mail foo@example.org |
menyurel pesan yang ditandatangani secara clear-sign ke
foo@example.org |
gpg --clearsign --not-dash-escaped berkas_patch |
menandatangani berkas patch dengan cara clear-sign |
gpg --verify berkas |
memverifikasi berkas yang ditandatangani dengan cara clear-sign |
gpg -o berkas.sig -b berkas |
membuat tanda tangan terpisah |
gpg -o berkas.sig --detach-sign berkas |
, , |
gpg --verify berkas.sig berkas |
verifikasi berkas dengan berkas.sig |
gpg -o berkas_crypt.gpg -r nama -e berkas |
enkripsi kunci publik yang ditujukan untuk nama dari berkas ke berkas_crypt biner |
gpg -o berkas_crypt.gpg --recipient nama --encrypt berkas |
, , |
gpg -o berkas_crypt.asc -a -r nama -e berkas |
enkripsi kunci publik yang ditujukan untuk nama dari berkas ke berkas_crypt.asc terbungkus ASCII |
gpg -o berkas_crypt.gpg -c berkas |
enkripsi simetris dari berkas ke berkas_crypt.gpg |
gpg -o berkas_crypt.gpg --symmetric berkas |
, , |
gpg -o berkas_crypt.asc -a -c berkas |
enkripsi simetris yang ditujukan untuk nama dari berkas ke berkas_crypt.asc terbungkus ASCII |
gpg -o berkas -d berkas_crypt.gpg -r nama |
dekripsi |
gpg -o berkas --decrypt berkas_crypt.gpg |
, , |
Tambahkan yang berikut ke "~/.muttrc
" untuk menjaga GnuPG
yang lambat agar tidak dimulai secara otomatis, sambil membiarkannya
digunakan dengan mengetik "S
" di menu indeks.
macro index S ":toggle pgp_verify_sig\n" set pgp_verify_sig=no
Plugin gnupg
memungkinkan Anda menjalankan GnuPG secara
transparan untuk berkas dengan ekstensi ".gpg
",
".asc
", dan ".pgp
".[6]
$ sudo aptitude install vim-scripts $ echo "packadd! gnupg" >> ~/.vim/vimrc
md5sum
(1) menyediakan utilitas untuk membuat berkas
digest menggunakan metode dalam rfc1321 dan
memverifikasi setiap berkas dengan itu.
$ md5sum foo bar >baz.md5 $ cat baz.md5 d3b07384d113edec49eaa6238ad5ff00 foo c157a79031e1c40f85931829bc5fc552 bar $ md5sum -c baz.md5 foo: OK bar: OK
![]() |
Catatan |
---|---|
Perhitungan untuk jumlah MD5 kurang CPU intensif daripada yang untuk tanda tangan kriptografi oleh GNU Privacy Guard (GnuPG). Biasanya, hanya berkas digest tingkat atas yang ditandatangani secara kriptografis untuk memastikan integritas data. |
Pada sistem GNOME, alat GUI seahorse
(1) mengelola kata
sandi dan menyimpannya dengan aman di ring kunci
~/.local/share/keyrings/*
.
secret-tool
(1) dapat menyimpan kata sandi ke ring kunci
dari baris perintah.
Mari kita simpan frasa sandi yang dipakai untuk image disk terenkripsi LUKS/dm-crypt
$ secret-tool store --label='LUKS passphrase for disk.img' LUKS my_disk.img Password: ********
Kata sandi yang tersimpan ini dapat diambil dan diumpankan ke program lain,
misalnya, cryptsetup
(8).
$ secret-tool lookup LUKS my_disk.img | \ cryptsetup open disk.img disk_img --type luks --keyring - $ sudo mount /dev/mapper/disk_img /mnt
![]() |
Tip |
---|---|
Setiap kali Anda perlu memberikan kata sandi dalam skrip, gunakan
|
Ada banyak alat gabungan untuk kode sumber. Perintah berikut menarik perhatian saya.
Tabel 10.10. Daftar alat penggabungan kode sumber
paket | popcon | ukuran | perintah | deskripsi |
---|---|---|---|---|
patch
|
V:97, I:700 | 248 | patch (1) |
menerapkan berkas diff ke yang asli |
vim
|
V:95, I:369 | 3743 | vimdiff (1) |
membandingkan 2 berkas berdampingan di vim |
imediff
|
V:0, I:0 | 200 | imediff (1) |
alat gabungan 2/3 arah layar penuh interaktif |
meld
|
V:7, I:30 | 3536 | meld (1) |
membandingkan dan menggabungkan berkas (GTK) |
wiggle
|
V:0, I:0 | 175 | wiggle (1) |
menerapkan patch yang ditolak |
diffutils
|
V:862, I:996 | 1735 | diff (1) |
membandingkan berkas baris per baris |
diffutils
|
V:862, I:996 | 1735 | diff3 (1) |
membandingkan dan menggabungkan tiga berkas baris demi baris |
quilt
|
V:2, I:22 | 871 | quilt (1) |
mengelola serangkaian patch |
wdiff
|
V:7, I:51 | 648 | wdiff (1) |
menampilkan perbedaan kata antara berkas-berkas teks |
diffstat
|
V:13, I:121 | 74 | diffstat (1) |
menghasilkan histogram perubahan oleh diff |
patchutils
|
V:16, I:119 | 232 | combinediff (1) |
membuat patch kumulatif dari dua patch inkremental |
patchutils
|
V:16, I:119 | 232 | dehtmldiff (1) |
mengekstrak diff dari halaman HTML |
patchutils
|
V:16, I:119 | 232 | filterdiff (1) |
mengekstrak atau mengecualikan diff dari berkas diff |
patchutils
|
V:16, I:119 | 232 | fixcvsdiff (1) |
memperbaiki berkas diff yang dibuat oleh CVS yang oleh
patch (1) disalahtafsir |
patchutils
|
V:16, I:119 | 232 | flipdiff (1) |
menukar urutan dua patch |
patchutils
|
V:16, I:119 | 232 | grepdiff (1) |
menunjukkan berkas mana yang dimodifikasi oleh patch yang cocok dengan regex |
patchutils
|
V:16, I:119 | 232 | interdiff (1) |
menunjukkan perbedaan antara dua berkas diff unified |
patchutils
|
V:16, I:119 | 232 | lsdiff (1) |
menunjukkan berkas mana yang dimodifikasi oleh patch |
patchutils
|
V:16, I:119 | 232 | recountdiff (1) |
hitung ulang cacah dan ofset dalam diff konteks terpadu |
patchutils
|
V:16, I:119 | 232 | rediff (1) |
memperbaiki ofset dan cacah diff yang disunting dengan tangan |
patchutils
|
V:16, I:119 | 232 | splitdiff (1) |
memisahkan patch inkremental |
patchutils
|
V:16, I:119 | 232 | unwrapdiff (1) |
demangle patch yang telah berganti baris |
dirdiff
|
V:0, I:1 | 167 | dirdiff (1) |
menampilkan perbedaan dan menggabungkan perubahan antara pohon direktori |
docdiff
|
V:0, I:0 | 553 | docdiff (1) |
membandingkan dua berkas kata demi kata / huruf demi huruf |
makepatch
|
V:0, I:0 | 100 | makepatch (1) |
menghasilkan berkas patch yang diperluas |
makepatch
|
V:0, I:0 | 100 | applypatch (1) |
menerapkan berkas patch yang diperluas |
Prosedur berikut mengekstrak perbedaan antara dua berkas sumber dan membuat
berkas diff terpadu "file.patch0
" atau
"file.patch1
" tergantung pada lokasi berkas.
$ diff -u file.old file.new > file.patch0 $ diff -u old/file new/file > file.patch1
Berkas diff (atau disebut berkas patch) digunakan untuk mengirim pembaruan program. Pihak penerima menerapkan pembaruan ini ke berkas lain dengan yang berikut ini.
$ patch -p0 file < file.patch0 $ patch -p1 file < file.patch1
Jika Anda memiliki dua versi kode sumber, Anda dapat melakukan penggabungan
2 arah secara interaktif menggunakan imediff
(1) dengan
yang berikut.
$ imediff -o file.merged file.old file.new
Jika Anda memiliki tiga versi kode sumber, Anda dapat melakukan penggabungan
3 arah secara interaktif menggunakan imediff
(1) dengan
yang berikut.
$ imediff -o file.merged file.yours file.base file.theirs
Git adalah alat pilihan hari ini untuk sistem kontrol versi (version control system/VCS) karena Git dapat melakukan segalanya untuk manajemen kode sumber lokal dan jarak jauh.
Debian menyediakan layanan Git bebas melalui layanan Debian Salsa. Dokumentasinya dapat ditemukan di https://wiki.debian.org/Salsa.
Berikut adalah beberapa paket terkait Git.
Tabel 10.11. Daftar paket dan perintah terkait git
paket | popcon | ukuran | perintah | deskripsi |
---|---|---|---|---|
git
|
V:351, I:549 | 46734 | git (7) |
Git, sistem kontrol revisi yang cepat, mampu menangani beban skala besar, dan terdistribusi |
gitk
|
V:5, I:33 | 1838 | gitk (1) |
Peramban repositori GUI Git dengan riwayat |
git-gui
|
V:1, I:18 | 2429 | git-gui (1) |
GUI untuk Git (Tanpa riwayat) |
git-email
|
V:0, I:10 | 1087 | git-send-email (1) |
mengirim kumpulan patch sebagai surel dari Git |
git-buildpackage
|
V:1, I:9 | 1988 | git-buildpackage (1) |
mengotomatiskan pemaketan Debian dengan Git |
dgit
|
V:0, I:1 | 473 | dgit (1) |
interoperabilitas git dengan arsip Debian |
imediff
|
V:0, I:0 | 200 | git-ime (1) |
alat pembantu pemecah commit git interaktif |
stgit
|
V:0, I:0 | 601 | stg (1) |
quilt di atas git (Python) |
git-doc
|
I:12 | 13208 | T/T | dokumentasi resmi untuk Git |
gitmagic
|
I:0 | 721 | T/T | "Git Magic", panduan yang lebih mudah dipahami untuk Git |
Anda mungkin ingin mengatur beberapa konfigurasi global di
"~/.gitconfig
" seperti nama dan alamat surel Anda yang
digunakan oleh Git dengan yang berikut ini.
$ git config --global user.name "Name Surname" $ git config --global user.email yourname@example.com
Anda juga dapat menyesuaikan perilaku baku Git dengan yang berikut ini.
$ git config --global init.defaultBranch main $ git config --global pull.rebase true $ git config --global push.default current
Jika Anda terlalu terbiasa dengan perintah CVS atau Subversion, Anda mungkin ingin menetapkan beberapa alias perintah dengan yang berikut.
$ git config --global alias.ci "commit -a" $ git config --global alias.co checkout
Anda dapat memeriksa konfigurasi global Anda dengan berikut ini.
$ git config --global --list
Operasi Git melibatkan beberapa data.
The working tree which holds user facing files and to which you make changes.
Perubahan yang akan dicatat harus dipilih secara eksplisit dan dipentaskan
ke indeks. Ini adalah perintah git add
dan git
rm
.
Indeks penyimpan berkas yang di-stage.
Berkas yang di-stage akan di-commit ke repositori lokal atas permintaan
berikutnya. Ini adalah perintah git commit
.
Repositori lokal yang menyimpan berkas yang di-commit.
Git mencatat riwayat tertaut dari data yang di-commit dan mengaturnya sebagai branch dalam repositori.
Repositori lokal dapat mengirim data ke repositori jarak jauh dengan
perintah git push
.
Repositori lokal dapat menerima data dari repositori jarak jauh dengan
perintah git fetch
dan git pull
.
Perintah git pull
melakukan perintah git
merge
atau git rebase
setelah perintah
git fetch
.
Di sini, git merge
menggabungkan dua branch sejarah yang
terpisah di akhir hingga satu titik. (Ini adalah baku dari git
pull
tanpa penyesuaian dan mungkin baik untuk orang hulu yang
mempublikasikan cabang kepada banyak orang.)
Di sini, git rebase
menciptakan satu cabang tunggal
sejarah berurutan dari cabang remote yang diikuti oleh cabang lokal. (Ini
adalah kasus penyesuaian pull.rebase true
dan mungkin
baik untuk kita semua.)
Repositori jarak jauh yang menyimpan berkas yang di-commit.
Komunikasi ke repositori jarak jauh menggunakan protokol komunikasi yang aman seperti SSH atau HTTPS.
Pohon kerja adalah berkas-berkas di luar direktori
.git/
. Berkas di dalam direktori
.git/
menyimpan indeks, data repositori lokal, dan
beberapa berkas teks konfigurasi git.
Berikut adalah ikhtisar perintah Git utama.
Tabel 10.12. Perintah Git Utama
Perintah Git | fungsi |
---|---|
git init |
membuat repositori (lokal) |
git clone URL |
mengklon repositori jarak jauh ke repositori lokal dengan pohon kerja |
git pull origin main |
memperbarui brach main lokal berdasarkan repositori
origin jarak jauh |
git add . |
menambahkan berkas di pohon kerja ke indeks untuk berkas yang sudah ada sebelumnya dalam indeks saja |
git add -A . |
menambahkan berkas di pohon kerja ke indeks untuk semua berkas termasuk penghapusan |
git rm namaberkas |
menghapus berkas dari pohon kerja dan indeks |
git commit |
meng-commit perubahan yang di-stage dalam indeks ke repositori lokal |
git commit -a |
menambahkan semua perubahan pada pohon kerja ke indeks dan meng-commit mereka ke repositori lokal (menambah + commit) |
git push -u origin nama_branch |
memperbarui repositori origin jarak jauh oleh branch
branch_name lokal (pemanggilan awal) |
git push origin nama_branch |
memperbarui repositori origin jarak jauh oleh branch
branch_name lokal (pemanggilan berikutnya) |
git diff treeish1 treeish2 |
menunjukkan perbedaan antara commit treeish1 dan commit treeish2 |
gitk |
Tampilan GUI dari pohon sejarah branch repositori VCS |
Berikut adalah tips Git.
Tabel 10.13. Tips Git
Baris perintah Git | fungsi |
---|---|
gitk --all |
melihat sejarah Git lengkap dan beroperasi pada mereka seperti mengatur ulang HEAD ke commit lain, cherry-pick patch, membuat tag dan branch ... |
git stash |
mengambil pohon kerja bersih tanpa kehilangan data |
git remote -v |
memeriksa pengaturan untuk remote |
git branch -vv |
memeriksa pengaturan untuk branch |
git status |
menampilkan status pohon kerja |
git config -l |
daftar pengaturan git |
git reset --hard HEAD; git clean -x -d -f |
mengembalikan semua perubahan pohon kerja dan membersihkannya sepenuhnya |
git rm --cached namaberkas |
memulihkan indeks ter-stage yang diubah oleh git add
nama_berkas |
git reflog |
dapatkan log referensi (berguna untuk memulihkan commit dari branch yang dihapus) |
git branch nama_branch_baru HEAD@{6} |
membuat branch baru dari informasi reflog |
git remote add remote_baru URL |
menambahkan repositori jarak jauh new_remote yang diacu
oleh URL |
git remote rename origin upstream |
mengganti nama repositori jarak jauh dari origin ke
upstream |
git branch -u upstream/nama_branch |
mengatur pelacakan jarak jauh ke repositori jarak jauh di
upstream dan nama branch-nya
branch_name . |
git remote set-url origin https://foo/bar.git |
mengubah URL origin |
git remote set-url --push upstream DISABLED |
nonaktifkan push ke upstream (Sunting
.git/config untuk mengaktifkan kembali) |
git remote update upstream |
fetch updates of all remote branches in the upstream
repository |
git fetch upstream foo:upstream-foo |
create a local (possibly orphan) upstream-foo branch as a
copy of foo branch in the upstream
repository |
git checkout -b topic_branch ; git push -u topic_branch
origin |
membuat topic_branch baru dan mem-push ke
origin |
git branch -m namalama namabaru |
mengganti nama nama cabang lokal |
git push -d origin branch_yang_akan_dihapus |
menghapus branch remote (metode baru) |
git push origin :branch_yang_akan_dihapus |
menghapus branch remote (metode lama) |
git checkout --orphan unconnected |
membuat branch baru yang tidak terhubung |
git rebase -i origin/main |
reorder/drop/squish commit dari origin/main untuk
membersihkan riwayat branch |
git reset HEAD^; git commit --amend |
squash 2 commit terakhir menjadi satu |
git checkout topic_branch ; git merge --squash topic_branch
|
squash seluruh topic_branch menjadi satu commit |
git fetch --unshallow --update-head-ok origin
'+refs/heads/*:refs/heads/*' |
mengubah klon shallow menjadi klon penuh dari semua branch |
git ime |
membagi commit terakhir menjadi serangkaian commit berkas demi berkas yang
lebih kecil dll. (paket imediff diperlukan) |
git repack -a -d; git prune |
mengemas ulang repositori lokal ke dalam satu pack (ini dapat membatasi kemungkinan pemulihan data yang hilang dari branch yang terhapus, dll.) |
![]() |
Awas |
---|---|
Jangan gunakan string tag dengan spasi di dalamnya bahkan jika beberapa alat
seperti |
![]() |
Perhatian |
---|---|
Jika branch lokal yang telah di-push ke repositori jarak jauh di-rebase atau
di-squash, mem-push branch ini memiliki risiko dan membutuhkan opsi
|
![]() |
Perhatian |
---|---|
Menjalankan suatu sub perintah |
![]() |
Tip |
---|---|
Jika ada berkas yang dapat dieksekusi |
Lihat yang berikut.
halaman man: git(1)
(/usr/share/doc/git-doc/git.html
)
Manual Pengguna Git
(/usr/share/doc/git-doc/user-manual.html
)
Pengantar tutorial untuk
git (/usr/share/doc/git-doc/gittutorial.html
)
Pengantar tutorial untuk
git: bagian dua
(/usr/share/doc/git-doc/gittutorial-2.html
)
GIT Sehari-hari Dengan Sekitar
20 Perintah
(/usr/share/doc/git-doc/giteveryday.html
)
Git Magic
(/usr/share/doc/gitmagic/html/index.html)
Sistem kontrol versi (VCS) kadang-kadang dikenal sebagai sistem kontrol revisi (RCS), atau manajemen konfigurasi perangkat lunak (SCM).
Berikut adalah ringkasan VCS non-Git lainnya yang terkenal pada sistem Debian.
Tabel 10.14. Daftar alat sistem kontrol versi lainnya
paket | popcon | ukuran | perkakas | Tipe VCS | kommen |
---|---|---|---|---|---|
mercurial
|
V:5, I:32 | 2019 | Mercurial | terdistribusi | DVCS dalam Python dan sebagian C |
darcs
|
V:0, I:5 | 34070 | Darcs | terdistribusi | DVCS dengan aljabar patch cerdas (lambat) |
bzr
|
I:8 | 28 | GNU Bazaar | terdistribusi | DVCS yang dipengaruhi oleh tla ditulis dalam Python
(historis) |
tla
|
V:0, I:1 | 1022 | GNU arch | terdistribusi | DVCS terutama oleh Tom Lord (historis) |
subversion
|
V:13, I:72 | 4837 | Subversion | remote | "CVS dilakukan dengan benar", VCS jarak jauh standar yang lebih baru (bersejarah) |
cvs
|
V:4, I:30 | 4753 | CVS | remote | VCS jarak jauh standar sebelumnya (bersejarah) |
tkcvs
|
V:0, I:1 | 1498 | CVS, … | remote | Tampilan GUI dari pohon repositori VCS (CVS, Subversion, RCS) |
rcs
|
V:2, I:13 | 564 | RCS | lokal | "Unix SCCS dilakukan dengan benar" (historis) |
cssc
|
V:0, I:1 | 2044 | CSSC | lokal | klon dari Unix SCCS (historis) |
[4] Media write-once seperti CD/DVD-R dapat mencegah kecelakaan penimpaan. (Lihat Bagian 9.8, “Data biner” tentang cara menulis ke media penyimpanan dari baris perintah shell. Lingkungan GUI desktop GNOME memberi Anda akses mudah melalui menu: "Tempat→Pencipta CD/DVD".)
[5] Sebagian data ini tidak dapat diregenerasi dengan memasukkan string masukan yang sama ke sistem.
[6] Jika Anda menggunakan "~/.vimrc
" bukan
"~/.vim/vimrc
", silakan ganti sesuai dengan itu.