追加情報:
大きなディレクトリをバックアップしていますが、予想外のtar
大きなファイルがいくつかあります。この接続はネットワーク経由で行われ、非常に遅いため、単に接続を待つことはできません。
このファイルには重要なものはありません。
私は最初のいくつかを削除しましたecho > file
。今、それへの唯一のリンクがありますが、完全に再起動せずにそれを進める方法を見つけることができないようです。rm -rf
tar
tar
ファイルはext4ファイルシステムにあり、sshfsを介してネットワーク経由でアクセスできます。
答え1
echo >file
これが最も簡単な解決策になります。しかし、一度ファイルが削除されると、もはや不可能です。
しかし、待って! ext4ファイルシステムを使用しているので、tarがLinuxで実行されているとします。 (他のすべてのUnixバリアントは同様の解決策を受け入れるわけではありませんが、一部は同様の解決策を受け入れます。)Linuxでは、次のように削除されたが開いているファイルにアクセスできます。ここでは、ファイルを開いたプロセスのプロセスID、ファイル記述子、ファイルが開かれました。このファイル記述子を通して。ファイルはファイルへのシンボリックリンクですが、マジックリンクです。ファイルを削除しても機能します。試してみると、次のような内容が表示されます。/proc/PID/fd/FD
PID
FD
ls -l
/proc/1234/fd/4 -> /path/to/file (deleted)
リンクが壊れているように見えますが、実際にはファイルを開くことができます。特に、次のように切り取ることができます: >/proc/1234/fd/4
。
ないシステムで作業している場合は、/proc
デバッガを使用してtarプロセス自体でトリミングを実行できます。デバッガをプロセスに接続して実行するようにします。truncate(4)
ここで 4 は tar が読み取るファイル記述子です。たとえば、GDBを使用すると、次のことを試すことができます。
$ ps
… find the PID of the tar process, e.g. 1234
$ lsof -p1234
… find the file descriptor that you want to act on, e.g. 4
$ gdb -pid 1234
…
(gdb) call truncate(4)
(gdb) detach
これは、tarが使用するいくつかのデータ構造を一貫してレンダリングする可能性があるため、tarを混乱させることもそうでない場合もあるため、実際に試す前に試してみることをお勧めします。
答え2
タールを停止しますか?
ps aux | grep tar
Find the pid of the tar process
kill $PID