Are you getting "Found a swap file by the name" for some file with .swp extension? Are you trying to open a file using some editor such as vim or vi and getting this message? Do you want to get rid of this message? The solution is quite easy, just delete the reported .swp
file but hey It is important that you fix this properly or you may loose unsaved data.
In this tutorial I will share the steps to fix this WARNING message in a proper way, there can be various scenarios under which you get this message so please read the text properly before taking any ACTION
What is .swp file? Why do I need this file ?
- Before we go into the solution part, do you know what is this
.swp
file and why is it there? and if you really need this file? - Please NOTE even though the extension uses
.swp
, these files are not related SWAP memory so do not get confuse with them - A
.swp
file is created as soon as we open a file usingVim/Vi
editor - On Unix and Linux, a '
.
' is prepended to swap file names in the same directory as the edited file. - This avoids that the swap file shows up in a directory listing as Unix and Linux will consider it as hidden file.
Vim
stores the things you changed in a swap file.- Using the original file you started from plus the swap file you can mostly recover your work.
- You can see the name of the current swap file using
:sw[apname]
- The name of the swap file is normally the same as the file you are editing, with the extension ".
swp
" - If this file already exists (e.g., when you are recovering from a crash) a warning is given and another extension is used, "
.swo
", ".swn
", etc. - An existing
.swp
file will never be overwritten. - The swap file is deleted as soon as
Vim
stops editing the file.
You can learn more about this file using
# vim +help\ swap-file
Is it safe to delete .swp file
- The answer is not that straight forward
- It is possible that the same file is being modified by different users at the same time using any editor.
- So assuming user root is modifying the content of
/tmp/file
in terminal 1 and another user logs in as root from different terminal and attempts to access the same file for editing - In such case you will get
process ID: 1453 (still running)
- So we know that someone is already accessing this file at
PID 1453
# ps -p 1453
PID TTY TIME CMD
1453 pts/1 00:00:00 vim
- So in such case it is recommended to
quit
the editor without making any changes. - As if you choose to Continue with Edit then there will be two different swap file created with different extensions, as you can see here:
# ls -l /tmp/.file.sw* -rw-r--r-- 1 root root 12288 May 30 11:54 /tmp/.file.swo -rw-r--r-- 1 root root 12288 May 30 11:54 /tmp/.file.swp
- This can cause problem because there will be two different version of same file
- So if you get below message along with "
Found a swap file by the name
"
process ID: 1453 (still running)
- Then you should choose to Quit or Abort so that the changes from first user are intact and do not delete the
.swp
file. Although you can open the file in Read Only mode to just view the changes
Swap file "/tmp/.file.swp" already exists!
[O]pen Read-Only, (E)dit anyway, (R)ecover, (Q)uit, (A)bort:
How to fix "Found a swap file by the name"?
The fix is quite simple to overcome this warning i.e. just go ahead and delete the reported .swp
file using rm -f /path/.file.swp
But with this you loose any chance of file recovery. So it is important that you first recover the content from
.swp
file before you delete it.
A Sample snippet of this WARNING
E325: ATTENTION
Found a swap file by the name "/tmp/.file.swp"
owned by: root dated: Sat May 30 13:37:50 2020
file name: /tmp/file
modified: no
user name: root host name: client.example.com
process ID: 1756
While opening file "/tmp/file"
dated: Sat May 30 12:52:50 2020
(1) Another program may be editing the same file. If this is the case,
be careful not to end up with two different instances of the same
file when making changes. Quit, or continue with caution.
(2) An edit session for this file crashed.
If this is the case, use ":recover" or "vim -r /tmp/file"
to recover the changes (see ":help recovery").
If you did this already, delete the swap file "/tmp/.file.swp"
to avoid this message.
Recover from swp file into a different file
- It is possible that your last
Vim/Vi
session crashed for some reason while you were editing some file and your latest changes were not saved - In my case I have
/tmp/file
which crashed and I could not save the latest content - Now when I try to open
/tmp/file
usingvim
editor, I get this warning "Found a swap file by the name "/tmp/.file.swp"
" - Now I have an option to
RECOVER
the content but I am not sure what contents would be restored?
It is good practice to write the recovered file elsewhere. So I will create a new file file_recover
, you can use any name as that doesn't matter
# touch /tmp/file_recover
Next open this file using vi/vim
editor
Press Esc and enter :rec <path/of/file>
to perform the recovery in this new file. For our example :rec /tmp/file
This command will recover the content of /tmp/file
using /tmp/.file.swp
into your current file i.e. /tmp/file_recover
. Check the status of the Recovery. As it is also possible that if your .swp
file is corrupted then Recovery may Fail
Next to compare the difference between the recovered and original content, press Esc
followed by :DiffOrig
and hit Enter
This will divide your terminal into two window with the difference of content between original and recovered file. Here you can check and decide if you wish to continue with recovery.
If you choose to continue with Recovery then you can exit from both the files without saving. Press Esc
followed by :q
to exit without saving
Now open your original file using vi or vim
editor which will again show you the warning
, you will also see below message at the bottom of the terminal
Since we know the Recovery works, press "R" to initiate the recovery
So the recovery was successful. Press Enter to continue with editing of the document.
Once you are sure the recovery is ok
delete the swap file. Otherwise, you will continue to get warning messages that the ".swp" file already exists
# rm -f /tmp/.file.swp
Recover from swp file into same file
If you know the contents which has changed and you don't need to do any type of comparison then you can directly go ahead and recover the content from .swp
file using vim -r <file>
For example, here I will directly edit the file using vim
with -r
to open the file and also recover the content from last saved swp
buffer
# vim -r /tmp/file
The snippet from output from this command
This shows that the Recovery was completed. Hit Enter to continue editing the document.
Once you are done save and exit the file and go ahead and delete the swp
file to avoid further warning
# rm -f /tmp/.file.swp
Delete swp file without recovery
If you do not wish to recover the contents from your last saved state in the swap file. You can just go ahead and delete the .swp file to avoid any further warning.
IMPORTANT NOTE: Once this .swp
file is deleted there is no way to know the changes which will get lost in your original file. So I hope you know what you are doing
# rm -f /tmp/.file.swp
How to avoid using swap file?
- So you don't want to use swap file? This is possible but not recommended
- You can start the editing of a file using
vim -n
where-n
will make sure there are no swap files created when editing the respective file - In such case if
vim
crashes then there is no possible way to recover your unsaved data from this file
In this example from terminal 1 I will open /tmp/file
for editing
# vim -n /tmp/file
From a different file, if I check for .swp
files for this file
# ls -l /tmp/.file.sw*
ls: cannot access '/tmp/.file.sw*': No such file or directory
As expected no .swp
files were created
Conclusion
In this tutorial we learned all about swp
files, why it is important to use these swp
files and how to fix "Found a swap file by the name
". It is very much possible that due to some unexpected event your existing vim/vi
session crashed which would normally mean that all your saved changes are lost. But NO.
Vim/Vi
editor keeps a copy of your changes in these .swp
files. The content in these swp
files are updated after typing 200 characters or when you have not typed anything for four seconds.This only happens if the buffer was changed, not when you only moved around. The reason why it is not kept up to date all the time is that this would slow down normal work too much.
It is recommended in most scenarios to first compare the buffer difference between original and recovered file content before you go ahead and delete the .swp
file
Lastly I hope the steps from the article to to overcome Found a swap file by the name
warning on Linux was helpful. So, let me know your suggestions and feedback using the comment section.
References
I have used below external references for this tutorial guide
Vim Swap File and Recovery