추가 정보:
큰 디렉터리를 백업하고 있는데 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