DEV Community

Cover image for Archiving and Transferring Files | RH124 (Indonesia ver.)
Handika Putra Prasetya
Handika Putra Prasetya

Posted on

Archiving and Transferring Files | RH124 (Indonesia ver.)

Perintah tar

Pengarsipan dan pengompresan file berguna ketika membuat file cadangan (backup) dan mentransfer data melalui jaringan. Salah satu perintah tertua dan paling umum untuk membuat dan bekerja dengan arsip backup adalah perintah tar.

Dengan tar, pengguna dapat mengumpulkan kumpulan file yang besar ke dalam satu file (arsip). Arsip tar adalah urutan terstruktur dari data berkas yang dicampur dengan metadata tentang setiap berkas dan indeks sehingga setiap berkas dapat diekstrak. Arsip dapat dikompresi menggunakan kompresi gzip, bzip2, atau xz.

Perintah tar dapat membuat daftar isi arsip atau mengekstrak filenya ke sistem saat ini.

Pilihan opsi tar

Opsi perintah tar dibagi menjadi operasi (tindakan yang ingin Anda lakukan): opsi umum dan opsi kompresi. Berikut ini menunjukkan opsi umum, opsi umum versi panjang, dan deskripsinya:

List operasi tar

  1. -c (--create): Membuat arsip baru.
  2. -x (--extract): Ekstrak dari arsip yang sudah ada.
  3. -t (--list): Membuat daftar isi arsip.

List Pilihan Opsi Umum tar

  1. -v (--verbose): Verbose. Menunjukkan file mana yang diarsipkan atau diekstrak.
  2. -f (--file=): Nama file. Opsi ini harus diikuti dengan nama file arsip yang akan digunakan atau dibuat.
  3. -p (--preserve-permissions): Mempertahankan izin file dan direktori saat mengekstrak arsip, tanpa mengurangi umask.

List Pilihan Opsi Kompresi tar

  1. -z (--gzip): Menggunakan kompresi gzip (.tar.gz).
  2. -j (--bzip2): Menggunakan kompresi bzip2 (.tar.bz2). bzip2 biasanya menghasilkan rasio kompresi yang lebih baik daripada gzip.
  3. -J (--xz): Menggunakan kompresi xz (.tar.xz). Kompresi xz biasanya menghasilkan rasio kompresi yang lebih baik daripada bzip2.

Mengarsipkan File dan Direktori

Opsi pertama yang digunakan saat membuat arsip baru adalah opsi c, diikuti dengan opsi f, kemudian spasi tunggal, lalu nama file dari arsip yang akan dibuat, dan terakhir daftar file dan direktori yang akan ditambahkan ke dalam arsip. Arsip dibuat di direktori saat ini kecuali ditentukan lain.

Peringatan
Sebelum membuat arsip tar, pastikan tidak ada arsip lain di direktori dengan nama yang sama dengan arsip baru yang akan dibuat. Perintah tar akan menimpa arsip yang sudah ada tanpa peringatan.

Perintah berikut ini membuat sebuah arsip bernama archive.tar dengan isi file1, file2, dan file3 di direktori beranda pengguna.

[user@host ~]$ tar -cf archive.tar file1 file2 file3
[user@host ~]$ ls archive.tar
archive.tar
Enter fullscreen mode Exit fullscreen mode

Perintah tar di atas juga dapat dieksekusi dengan menggunakan opsi versi panjang.

[user@host ~]$ tar --file=archive.tar --create file1 file2 file3
Enter fullscreen mode Exit fullscreen mode

Catatan
Apabila mengarsipkan file dengan nama jalur absolut, bagian depan / dari jalur dihapus dari nama file secara default. Menghapus bagian depan / pada path membantu pengguna untuk menghindari penimpaan file penting saat mengekstrak arsip. Perintah tar mengekstrak file relatif terhadap direktori kerja saat ini.

Agar tar dapat mengarsipkan berkas yang dipilih, pengguna yang menjalankan perintah tar haruslah pengguna yang dapat membaca berkas tersebut. Sebagai contoh, membuat arsip baru dari folder /etc dan semua isinya membutuhkan hak akses root, karena hanya pengguna root yang diizinkan untuk membaca semua berkas yang ada pada direktori /etc. Pengguna yang tidak memiliki hak istimewa dapat membuat arsip direktori /etc, tetapi arsip tersebut menghilangkan file yang tidak memiliki hak baca untuk pengguna tersebut, dan menghapus direktori yang tidak memiliki hak baca dan eksekusi untuk pengguna tersebut.

Untuk membuat arsip tar bernama, /root/etc.tar, dengan direktori /etc sebagai konten sebagai root:

[root@host ~]# tar -cf /root/etc.tar /etc
tar: Removing leading `/' from member names
[root@host ~]# 
Enter fullscreen mode Exit fullscreen mode

Penting
Beberapa perizinan tingkat lanjut yang ada di redhat, seperti ACL dan konteks SELinux, tidak secara otomatis disimpan di dalam arsip tar. Gunakan opsi --xattrs saat membuat arsip untuk menyimpan atribut yang diperluas tersebut dalam arsip tar.

Melihat Daftar Isi Arsip

Opsi t mengarahkan tar untuk membuat daftar isi (daftar isi, maka t) arsip. Gunakan opsi f dengan nama arsip yang akan ditanyakan. Sebagai contoh:

[root@host ~]# tar -tf /root/etc.tar
etc/
etc/fstab
etc/crypttab
etc/mtab
...output omitted...
Enter fullscreen mode Exit fullscreen mode

Mengekstrak File dari Arsip

Arsip tar biasanya diekstrak di direktori kosong untuk memastikan bahwa ia tidak menimpa berkas yang sudah ada. Ketika root mengekstrak sebuah arsip, perintah tar akan mempertahankan kepemilikan pengguna dan grup asli dari berkas-berkas tersebut. Jika pengguna biasa mengekstrak berkas menggunakan tar, kepemilikan berkas menjadi milik pengguna yang mengekstrak berkas dari arsip.

Untuk mengembalikan file dari arsip /root/etc.tar ke direktori /root/etcbackup, jalankan:

[root@host ~]# mkdir /root/etcbackup
[root@host ~]# cd /root/etcbackup
[root@host etcbackup]# tar -tf /root/etc.tar
etc/
etc/fstab
etc/crypttab
etc/mtab
...output omitted...
[root@host etcbackup]# tar -xf /root/etc.tar
Enter fullscreen mode Exit fullscreen mode

Secara default, ketika file diekstrak dari arsip, umask akan dikurangi dari izin konten arsip. Untuk mempertahankan izin file yang diarsipkan, gunakan opsi p saat mengekstrak arsip.

Pada contoh ini, sebuah arsip bernama, /root/myscripts.tar, diekstrak di direktori /root/scripts sambil mempertahankan hak akses dari file yang diekstrak:

[root@host ~]# mkdir /root/scripts
[root@host ~]# cd /root/scripts
[root@host scripts]# tar -xpf /root/myscripts.tar
Enter fullscreen mode Exit fullscreen mode

Membuat Arsip Terkompresi

Perintah tar mendukung tiga metode kompresi. Ada tiga metode kompresi berbeda yang didukung oleh perintah tar. Kompresi gzip adalah yang tercepat dan tertua dan paling banyak tersedia di seluruh distribusi dan bahkan di seluruh platform. Kompresi bzip2 membuat file arsip yang lebih kecil dibandingkan dengan gzip tetapi kurang tersedia secara luas dibandingkan dengan gzip, sedangkan metode kompresi xz relatif baru, tetapi biasanya menawarkan rasio kompresi terbaik dari metode-metode yang tersedia.

Catatan
Efektivitas algoritma kompresi apa pun tergantung pada jenis data yang dikompresi. File data yang sudah dikompresi, seperti format gambar yang dikompresi atau file RPM, biasanya menghasilkan rasio kompresi yang rendah.

Merupakan praktik yang baik untuk menggunakan satu direktori tingkat atas, yang dapat berisi direktori dan berkas lain, untuk menyederhanakan ekstraksi berkas dengan cara yang terorganisir.

Gunakan salah satu opsi berikut untuk membuat arsip tar terkompresi:

  • -z atau --gzip untuk kompresi gzip(namafile.tar.gz atau namafile.tgz)
  • -j atau --bzip2 untuk kompresi bzip2(namafile.tar.bz2)

  • -J atau -xz untuk kompresi xz(namafile.tar.xz)

Untuk membuat arsip terkompresi gzip bernama /root/etcbackup.tar.gz, dengan konten dari direktori /etc pada host:

[root@host ~]# tar -czf /root/etcbackup.tar.gz /etc
tar: Removing leading `/' from member names
Enter fullscreen mode Exit fullscreen mode

Untuk membuat arsip terkompresi bzip2 bernama /root/logbackup.tar.bz2, dengan konten dari direktori /var/log pada host:

[root@host ~]$ tar -cjf /root/logbackup.tar.bz2 /var/log
tar: Removing leading `/' from member names
Enter fullscreen mode Exit fullscreen mode

Untuk membuat arsip terkompresi xz bernama, /root/sshconfig.tar.xz, dengan konten dari direktori /etc/ssh pada host:

[root@host ~]$ tar -cJf /root/sshconfig.tar.xz /etc/ssh
tar: Removing leading `/' from member names
Enter fullscreen mode Exit fullscreen mode

Setelah membuat arsip, verifikasi konten arsip menggunakan opsi tf. Opsi untuk agen kompresi tidak wajib digunakan saat mencantumkan konten file arsip yang dikompresi. Misalnya, untuk membuat daftar konten yang diarsipkan di file /root/etcbackup.tar.gz, yang menggunakan kompresi gzip, gunakan perintah berikut:

[root@host ~]# tar -tf /root/etcbackup.tar.gz /etc
etc/
etc/fstab
etc/crypttab
etc/mtab
...output omitted...
Enter fullscreen mode Exit fullscreen mode

Mengekstrak Arsip Terkompresi

Langkah pertama saat mengekstrak arsip tar terkompresi adalah menentukan di mana file yang diarsipkan harus diekstrak, kemudian buat dan ubah ke direktori target. Perintah tar menentukan kompresi yang digunakan dan biasanya tidak perlu menggunakan opsi kompresi yang sama dengan yang digunakan saat membuat arsip. Adalah sah untuk menambahkan metode dekompresi ke perintah tar. Jika seseorang memilih untuk melakukannya, pilihan jenis dekompresi yang benar harus digunakan; jika tidak, tar akan menghasilkan kesalahan tentang jenis dekompresi yang ditentukan dalam pilihan yang tidak sesuai dengan jenis dekompresi file.

Untuk mengekstrak isi arsip terkompresi gzip bernama /root/etcbackup.tar.gz pada direktori /tmp/etcbackup:

[root@host ~]# mkdir /tmp/etcbackup
[root@host ~]# cd /tmp/etcbackup
[root@host etcbackup]# tar -tf /root/etcbackup.tar.gz
etc/
etc/fstab
etc/crypttab
etc/mtab
...output omitted...
[root@host etcbackup]# tar -xzf /root/etcbackup.tar.gz
Enter fullscreen mode Exit fullscreen mode

Untuk mengekstrak isi arsip terkompresi bzip2 bernama /root/logbackup.tar.bz2 di direktori /tmp/logbackup:

[root@host ~]# mkdir /tmp/logbackup
[root@host ~]# cd /tmp/logbackup
[root@host logbackup]# tar -tf /root/logbackup.tar.bz2
var/log/
var/log/lastlog
var/log/README
var/log/private/
var/log/wtmp
var/log/btmp
...output omitted...
[root@host logbackup]# tar -xjf /root/logbackup.tar.bz2
Enter fullscreen mode Exit fullscreen mode

Untuk mengekstrak isi arsip terkompresi xz bernama /root/sshbackup.tar.xz di direktori /tmp/sshbackup:

[root@host ~]$ mkdir /tmp/sshbackup
[root@host ~]# cd /tmp/sshbackup
[root@host logbackup]# tar -tf /root/sshbackup.tar.xz
etc/ssh/
etc/ssh/moduli
etc/ssh/ssh_config
etc/ssh/ssh_config.d/
etc/ssh/ssh_config.d/05-redhat.conf
etc/ssh/sshd_config
...output omitted...
[root@host sshbackup]# tar -xJf /root/sshbackup.tar.xz
Enter fullscreen mode Exit fullscreen mode

Mentransfer File Antar Sistem dengan Aman

Mentransfer File Menggunakan Secure Copy
OpenSSH berguna untuk menjalankan perintah shell secara aman pada sistem jarak jauh. Perintah Secure Copy, scp, yang merupakan bagian dari paket OpenSSH, menyalin berkas dari sistem jarak jauh ke sistem lokal atau dari sistem lokal ke sistem jarak jauh. Perintah ini menggunakan server SSH untuk autentikasi dan mengenkripsi data ketika sedang ditransfer.

Anda dapat menentukan lokasi remote untuk sumber atau tujuan file yang disalin. Format lokasi jarak jauh harus dalam bentuk [user@]host:/path. Bagian user@ pada argumen bersifat opsional. Jika tidak ada, nama pengguna lokal Anda saat ini akan digunakan. Ketika Anda menjalankan perintah tersebut, klien scp Anda akan mengautentikasi ke server SSH jarak jauh seperti halnya ssh, menggunakan autentikasi berbasis kunci atau meminta kata sandi Anda.

Contoh berikut ini menunjukkan cara menyalin berkas lokal /etc/yum.conf dan /etc/hosts pada host, ke direktori home remoteuser pada sistem jarak jauh remotehost:

[user@host ~]$ scp /etc/yum.conf /etc/hosts remoteuser@remotehost:/home/remoteuser
remoteuser@remotehost's password: password
yum.conf                                   100%  813     0.8KB/s   00:00
hosts                                      100%  227     0.2KB/s   00:00
Enter fullscreen mode Exit fullscreen mode

Anda juga dapat menyalin berkas ke arah lain, dari sistem jarak jauh ke sistem berkas lokal. Pada contoh ini, berkas /etc/hostname pada remotehost disalin ke direktori lokal /home/user. Perintah scp mengautentikasi ke remotehost sebagai pengguna remoteuser.

[user@host ~]$ scp remoteuser@remotehost:/etc/hostname /home/user
remoteuser@remotehost's password: password
hostname                                   100%   22     0.0KB/s   00:00
Enter fullscreen mode Exit fullscreen mode

Untuk menyalin seluruh pohon direktori secara rekursif, gunakan opsi -r. Pada contoh berikut, direktori remote /var/log pada remotehost disalin secara rekursif ke direktori lokal /tmp/ pada host. Anda harus tersambung ke sistem remote sebagai root untuk memastikan bahwa Anda dapat membaca semua berkas dalam direktori /var/log jarak jauh.

[user@host ~]$ scp -r root@remoteuser:/var/log /tmp
root@remotehost's password: password
...output omitted...
Enter fullscreen mode Exit fullscreen mode

Mentransfer File Menggunakan Secure File Transfer Program

Untuk mengunggah atau mengunduh file secara interaktif dari server SSH, gunakan Secure File Transfer Program, sftp. Sesi dengan perintah sftp menggunakan mekanisme autentikasi aman dan transfer data terenkripsi ke dan dari server SSH.

Sama seperti perintah scp, perintah sftp menggunakan [user@]host untuk mengidentifikasi sistem target dan nama pengguna. Jika Anda tidak menentukan pengguna, perintah ini akan mencoba masuk menggunakan nama pengguna lokal Anda sebagai nama pengguna jarak jauh (remote). Anda kemudian akan dihadapkan pada prompt sftp>.

[user@host ~]$ sftp remoteuser@remotehost
remoteuser@remotehost's password: password
Connected to remotehost.
sftp> 
Enter fullscreen mode Exit fullscreen mode

Sesi sftp interaktif menerima berbagai perintah yang bekerja dengan cara yang sama pada sistem berkas jarak jauh (remote) seperti halnya pada sistem berkas lokal, seperti ls, cd, mkdir, rmdir, dan pwd. Perintah put mengupload berkas ke sistem jarak jauh. Perintah get mengunduh berkas dari sistem remote. Perintah exit keluar dari sesi sftp.

Untuk mengupload berkas /etc/hosts pada sistem lokal ke direktori yang baru dibuat /home/remoteuser/hostbackup pada remotehost. Sesi sftp selalu mengasumsikan bahwa perintah put diikuti oleh sebuah berkas pada sistem berkas lokal dan dimulai pada direktori home pengguna yang terhubung; dalam kasus ini, /home/remoteuser:

sftp> mkdir hostbackup
sftp> cd hostbackup
sftp> put /etc/hosts
Uploading /etc/hosts to /home/remoteuser/hostbackup/hosts
/etc/hosts                                 100%  227     0.2KB/s   00:00
sftp> 
Enter fullscreen mode Exit fullscreen mode

Untuk mengunduh /etc/yum.conf dari host remote ke direktori saat ini di sistem lokal, jalankan perintah get /etc/yum.conf dan keluar dari sesi sftp dengan perintah exit.

sftp> get /etc/yum.conf
Fetching /etc/yum.conf to yum.conf
/etc/yum.conf                              100%  813     0.8KB/s   00:00
sftp> exit
[user@host ~]$ 
Enter fullscreen mode Exit fullscreen mode

Top comments (0)