GNU/Linux >> Belajar Linux >  >> Linux

Cara memindahkan file di Linux

Memindahkan file di Linux tampaknya relatif mudah, tetapi ada lebih banyak opsi yang tersedia daripada yang disadari kebanyakan orang. Artikel ini mengajarkan pemula cara memindahkan file di GUI dan di baris perintah, tetapi juga menjelaskan apa yang sebenarnya terjadi di balik layar, dan membahas opsi baris perintah yang jarang dijelajahi oleh banyak pengguna.

Memindahkan apa?

Sebelum mempelajari pemindahan file, ada baiknya melihat lebih dekat apa yang sebenarnya terjadi saat memindahkan objek sistem file. Saat sebuah file dibuat, file tersebut ditugaskan ke inode , yang merupakan titik tetap dalam sistem file yang digunakan untuk penyimpanan data. Anda dapat memetakan inode apa ke file dengan perintah ls:

$ ls --inode example.txt
7344977 example.txt

Saat Anda memindahkan file, Anda tidak benar-benar memindahkan data dari satu inode ke inode lainnya, Anda hanya menetapkan nama atau jalur file baru ke objek file. Faktanya, file mempertahankan izinnya saat dipindahkan, karena memindahkan file tidak mengubah atau membuatnya kembali.

Inode file dan direktori tidak pernah menyiratkan pewarisan dan didikte oleh sistem file itu sendiri. Penetapan inode berurutan berdasarkan saat file dibuat dan sepenuhnya independen dari cara Anda mengatur komputer. File "di dalam" direktori mungkin memiliki nomor inode yang lebih rendah daripada direktori induknya, atau yang lebih tinggi. Misalnya:

$ mkdir foo
$ mv example.txt foo
$ ls --inode
7476865 foo
$ ls --inode foo
7344977 example.txt

Saat memindahkan file dari satu hard drive ke hard drive lain, inode sangat mungkin berubah. Ini terjadi karena data baru harus ditulis ke sistem file baru. Untuk alasan ini, di Linux tindakan memindahkan dan mengganti nama file secara harfiah adalah tindakan yang sama. Baik Anda memindahkan file ke direktori lain atau ke direktori yang sama dengan nama baru, kedua tindakan tersebut dilakukan oleh program dasar yang sama.

Artikel ini berfokus pada pemindahan file dari satu direktori ke direktori lain.

Bergerak dengan mouse

GUI adalah lapisan abstraksi yang ramah dan, bagi kebanyakan orang, di atas kumpulan data biner yang kompleks. Ini juga cara pertama dan paling intuitif untuk memindahkan file di Linux. Jika Anda terbiasa dengan pengalaman desktop, dalam arti umum, maka Anda mungkin sudah tahu cara memindahkan file di sekitar hard drive Anda. Di desktop GNOME, misalnya, tindakan default saat menyeret dan menjatuhkan file dari satu jendela ke jendela lain adalah memindahkan file daripada menyalinnya, jadi ini mungkin salah satu tindakan paling intuitif di desktop:

Manajer file Dolphin di desktop KDE Plasma default untuk meminta pengguna melakukan tindakan. Menahan Shift tombol saat menyeret file memaksa tindakan pindah:

Berpindah pada baris perintah

Terminal Linux

  • 7 emulator terminal teratas untuk Linux
  • 10 alat baris perintah untuk analisis data di Linux
  • Unduh Sekarang:lembar contekan SSH
  • Lembar contekan perintah Linux tingkat lanjut
  • Tutorial baris perintah Linux

Perintah shell yang ditujukan untuk memindahkan file di Linux, BSD, Illumos, Solaris, dan MacOS adalah mv . Perintah sederhana dengan sintaks yang dapat diprediksi, mv memindahkan file sumber ke tujuan yang ditentukan, masing-masing ditentukan oleh jalur file absolut atau relatif. Seperti disebutkan sebelumnya, mv adalah perintah umum untuk pengguna POSIX sehingga banyak pengubah tambahannya umumnya tidak diketahui, jadi artikel ini membawa beberapa pengubah yang berguna untuk Anda perhatikan apakah Anda baru atau berpengalaman.

Tidak semua mv perintah ditulis oleh orang yang sama, jadi Anda mungkin memiliki GNU mv , BSD mv , atau Sun mv , tergantung pada sistem operasi Anda. Opsi perintah berbeda dari implementasi ke implementasi (BSD mv tidak memiliki opsi panjang sama sekali) jadi lihat mv . Anda halaman manual untuk melihat apa yang didukung, atau instal versi pilihan Anda sebagai gantinya (itulah kemewahan open source).

Memindahkan file

Untuk memindahkan file dari satu folder ke folder lain dengan mv , ingat sintaks mv . Misalnya, untuk memindahkan file example.txt ke dalam Dokumen . Anda direktori:

$ sentuh example.txt
$ mv example.txt ~/Documents
$ ls ~/Documents
example.txt

Sama seperti saat Anda memindahkan file dengan menyeret dan menjatuhkannya ke ikon folder, perintah ini tidak menggantikan Dokumen dengan example.txt . Sebaliknya, mv mendeteksi bahwa Dokumen adalah folder, dan menempatkan example.txt file ke dalamnya.

Anda juga dapat dengan mudah mengganti nama file saat Anda memindahkannya:

$ touch example.txt
$ mv example.txt ~/Documents/foo.txt
$ ls ~/Documents
foo.txt

Itu penting karena memungkinkan Anda untuk mengganti nama file bahkan ketika Anda tidak ingin memindahkannya ke lokasi lain, seperti:

$ touch example.txt
$ mv example.txt foo2.txt
$ ls
foo2.txt
 

Memindahkan direktori

mv perintah tidak membedakan file dari direktori dengan cara cp melakukan. Anda dapat memindahkan direktori atau file dengan sintaks yang sama:

$ touch file.txt
$ mkdir foo_directory
$ mv file.txt foo_directory
$ mv foo_directory ~/Documents

Memindahkan file dengan aman

Jika Anda menyalin file ke direktori tempat file dengan nama yang sama sudah ada, mv perintah menggantikan file tujuan dengan yang Anda pindahkan, secara default. Perilaku ini disebut menghancurkan , dan terkadang itu persis seperti yang Anda inginkan. Di lain waktu, tidak.

Beberapa distribusi alias (atau Anda dapat menulis sendiri) mv ke mv --interactive , yang meminta Anda untuk konfirmasi. Beberapa tidak. Apa pun itu, Anda dapat menggunakan --interactive atau -i opsi untuk memastikan bahwa mv meminta konfirmasi jika dua file dengan nama yang sama bentrok:

$ mv --interactive example.txt ~/Documents
mv:menimpa '~/Documents/example.txt'?

Jika Anda tidak ingin campur tangan secara manual, gunakan --no-clobber atau -n sebagai gantinya. Bendera ini diam-diam menolak tindakan bergerak jika terjadi konflik. Dalam contoh ini, file bernama example.txt sudah ada di ~/Documents , sehingga tidak dipindahkan dari direktori saat ini seperti yang diinstruksikan:

$ mv --no-clobber example.txt ~/Documents
$ ls
example.txt

Berpindah dengan backup

Jika Anda menggunakan GNU mv , ada opsi cadangan yang menawarkan cara lain untuk pemindahan yang aman. Untuk membuat cadangan file tujuan yang bentrok, gunakan -b pilihan:

$ mv -b example.txt ~/Documents
$ ls ~/Documents
example.txt    example.txt~

Bendera ini memastikan bahwa mv menyelesaikan tindakan pemindahan, tetapi juga melindungi file yang sudah ada sebelumnya di lokasi tujuan.

Opsi pencadangan GNU lainnya adalah --backup , yang mengambil argumen yang mendefinisikan bagaimana file cadangan diberi nama:

  • sudah ada :Jika cadangan bernomor sudah ada di tempat tujuan, maka cadangan bernomor dibuat. Jika tidak, sederhana skema yang digunakan.
  • tidak ada :Tidak membuat cadangan meskipun --backup diatur. Opsi ini berguna untuk mengganti mv alias yang menyetel opsi pencadangan.
  • diberi nomor :Menambahkan file tujuan dengan nomor.
  • sederhana :Menambahkan file tujuan dengan ~ , yang dapat dengan mudah disembunyikan dari tampilan harian Anda dengan --ignore-backups opsi untuk ls .

Misalnya:

$ mv --backup=numbered example.txt ~/Documents
$ ls ~/Documents
-rw-rw-r--. 1 set pengguna 128 Agustus  1 17:23 example.txt
-rw-rw-r--. 1 set pengguna 128 Agustus  1 17:20 example.txt.~1~

Skema pencadangan default dapat diatur dengan variabel lingkungan VERSION_CONTROL. Anda dapat mengatur variabel lingkungan di ~/.bashrc . Anda file atau secara dinamis sebelum perintah Anda:

$ VERSION_CONTROL=mv bernomor --backup example.txt ~/Documents
$ ls ~/Documents
-rw-rw-r--. 1 set pengguna 128 Agustus  1 17:23 example.txt
-rw-rw-r--. 1 set pengguna 128 Agustus  1 17:20 example.txt.~1~
-rw-rw-r--. 1 set pengguna 128 Agustus  1 17:22 example.txt.~2~

--cadangan opsi tetap menghormati --interactive atau -i pilihan, sehingga masih meminta Anda untuk menimpa file tujuan, meskipun membuat cadangan sebelum melakukannya:

$ mv --backup=numbered example.txt ~/Documents
mv:menimpa '~/Documents/example.txt'? y
$ ls ~/Documents
-rw-rw-r--. 1 set pengguna 128 Agustus  1 17:24 example.txt
-rw-rw-r--. 1 set pengguna 128 Agustus  1 17:20 example.txt.~1~
-rw-rw-r--. 1 set pengguna 128 Agustus  1 17:22 example.txt.~2~
-rw-rw-r--. 1 set pengguna 128 Agustus  1 17:23 example.txt.~3~

Anda dapat mengganti -i dengan --force atau -f pilihan.

$ mv --backup=numbered --force example.txt ~/Documents
$ ls ~/Documents
-rw-rw-r--. 1 set pengguna 128 Agustus  1 17:26 example.txt
-rw-rw-r--. 1 set pengguna 128 Agustus  1 17:20 example.txt.~1~
-rw-rw-r--. 1 set pengguna 128 Agustus  1 17:22 example.txt.~2~
-rw-rw-r--. 1 set pengguna 128 Agustus  1 17:24 example.txt.~3~
-rw-rw-r--. 1 set pengguna 128 Agustus  1 17:25 example.txt.~4~

--cadangan opsi tidak tersedia di BSD mv .

Memindahkan banyak file sekaligus

Saat memindahkan banyak file, mv memperlakukan direktori akhir bernama sebagai tujuan:

$ mv foo bar baz ~/Documents
$ ls ~/Documents
foo   bar   baz

Jika item terakhir bukan direktori, mv mengembalikan kesalahan:

$ mv foo bar baz
mv:target 'baz' bukan direktori

Sintaks GNU mv cukup fleksibel. Jika Anda tidak dapat memberikan mv perintah dengan tujuan sebagai argumen terakhir, gunakan --target-directory atau -t pilihan:

$ mv --target-directory=~/Documents foo bar baz
$ ls ~/Documents
foo   bar   baz

Ini sangat berguna saat membuat mv perintah dari output beberapa perintah lain, seperti find perintah, xargs , atau GNU Paralel.

Bergerak berdasarkan mtime

Dengan GNU mv , Anda dapat menentukan tindakan pemindahan berdasarkan apakah file yang dipindahkan lebih baru daripada file tujuan yang akan diganti. Opsi ini dimungkinkan dengan --update atau -u opsi, dan tidak tersedia di BSD mv :

$ ls -l ~/Documents
-rw-rw-r--. 1 set pengguna 128 Agustus  1 17:32 example.txt
$ ls -l
-rw-rw-r--. 1 set pengguna 128 Agustus  1 17:42 example.txt
$ mv --update example.txt ~/Documents
$ ls -l ~/Documents
-rw-rw-r-- . 1 set pengguna 128 Agustus  1 17:42 example.txt
$ ls -l

Hasil ini secara eksklusif didasarkan pada waktu modifikasi file, bukan pada perbedaan kedua file, jadi gunakan dengan hati-hati. Sangat mudah untuk menipu mv hanya dengan sentuhan perintah:

$ cat example.txt
satu
$ cat ~/Documents/example.txt
satu
dua
$ sentuh example.txt
$ mv --update example.txt ~/Documents
$ cat ~/Documents/example.txt
satu

Jelas, ini bukan fungsi pembaruan paling cerdas yang tersedia, tetapi menawarkan perlindungan dasar terhadap penimpaan data terbaru.

Pindah

Ada lebih banyak cara untuk memindahkan data daripada hanya mv perintah, tetapi sebagai program default untuk pekerjaan itu, mv adalah pilihan universal yang baik. Sekarang setelah Anda mengetahui opsi yang tersedia, Anda dapat menggunakan mv lebih pintar dari sebelumnya.


Linux
  1. Bagaimana Mengelola Kemampuan File Linux

  2. Cara menemukan File di Linux

  3. Cara Mengaudit Akses File di Linux

  1. Cara Membuat Swap di Linux

  2. Cara membuat file swap di Linux

  3. Cara Mengosongkan File Log di Linux

  1. Cara Membuat File di Linux

  2. Bagaimana Mengganti Nama File di Linux?

  3. Cara memasang file iso di Linux