Bisakah file dipulihkan setelah perintah mv gagal?

1

Saya menggunakan mv * ..Unix untuk memindahkan semua isi direktori ke folder induknya. Ada folder bernama "Unduhan" di direktori saat ini dan orang tua. Yang di orangtua kosong untuk memulai.

Setelah menjalankan perintah ini, saya kembali ke prompt perintah, tetapi shell telah membeku, dan saya harus memulai sesi SSH baru. Sekarang, folder Unduhan di direktori induk masih kosong, dan folder Unduhan yang saya coba pindahkan sudah tidak ada lagi.

Apakah ada cara untuk mencari tahu di mana file-file ini berada, atau pada saat ini apakah diperlukan program pemulihan data untuk menemukan file-file tersebut, karena tidak ada lagi yang menunjuk ke mereka di sistem file?

noktulo
sumber
Bisakah Anda melihat direktori di folder yang sama setelah Anda menjalankan perintah? Coba telusuri direktori yang tersisa dan cari file di dalamnya.
julianm

Jawaban:

3

Anda mungkin ingin menjalankan pemeriksaan sistem file jika beberapa node hilang:

fsck -fyv /dev/sdaX

Anda harus mengubah sdaXpartisi Anda yang sebenarnya. Tapi sejauh yang saya tahu, jika file dihapus, itu hilang selamanya. Itu sebabnya saya selalu berlari cpdan ketika saya melihat semuanya baik-baik saja saya lari rm. Anda juga dapat mencoba dengan alat pemulihan data, tetapi tidak dijamin 100% bahwa Anda memulihkan semuanya. Setelah Anda kosong Anda tidak pernah kembali .

arielnmz
sumber
1

Anda harus berhati-hati dengan mv dan cp : mereka tidak memaafkan, dan Anda dapat dengan mudah kehilangan file, misalnya: -

mv * ..    ; # moves from current directory to parent, overwriting duplicates

Saya sarankan selalu menggunakan -n atau -i untuk mencegah overwrites. Saya juga menyarankan -v untuk mendaftar apa yang telah dilakukan. Saya pernah salah ketik (saya menangkap tombol #, di sebelah kembali di keyboard saya): -

mv * other/#

Ini memindahkan file pertama ke 'other / #', kemudian menimpa '#' yang sama dengan setiap file lainnya, membuat saya hanya memiliki '#', yang berisi file terakhir dipindahkan! Saya tidak melakukannya lagi.

Karena saya juga menggunakan TCC pada Windows yang saya ketikkan, tanpa diduga berharap untuk pindah ke file dengan nama yang sama di direktori target: -

mv -iv * other/*    ; # In TCC, MOVE * other\* would do what I wanted

Ini biasanya gagal, kecuali nama terakhir yang diperluas di target adalah direktori, dalam hal ini semua file di direktori saat ini dan semua file lain di target dipindahkan ke sana.

Adapun apa yang terjadi pada file Anda: jika Anda tahu nama-nama mereka, gunakan find dari direktori induk untuk melihat apakah Anda memindahkannya ke suatu tempat yang tidak terduga. Jika itu tidak berhasil, coba orangtua. Anda mungkin terkejut di mana mereka berakhir.

Jika Anda tidak percaya diri untuk mengingat opsi-opsi tersebut, tambahkan perintah berikut (atau yang serupa) ke ~ / .bashrc atau ~ / .bash_aliases : -

alias mv="`which mv` -iv"
AFH
sumber
Jadi mv * .. harus menimpa? Aneh karena direktori kosong asli adalah apa yang tampaknya ada di sana.
noktulo
Ya, mv tidak menimpa secara diam-diam secara default, meskipun akan meminta konfirmasi jika file tujuan tidak diaktifkan untuk menulis. Saya tidak bisa menjelaskan mengapa Anda akan kehilangan semua file Anda: Saya berharap disk atau kegagalan jaringan hanya kehilangan file yang dipindahkan pada saat itu, meskipun mungkin akan terus berlanjut setelah kegagalan untuk terus memindahkan file dan memberikan yang sama kesalahan masing-masing. Saya tidak dapat dengan mudah memeriksa ini. Perhatikan bahwa memindahkan direktori secara implisit memindahkan semua file dan subdirektori di bawahnya.
AFH