files have disappeared

heretical_1

Active Member
Joined
Jan 31, 2020
Messages
164
Reaction score
70
Credits
716
crap. Double crap. Had a folder on an external hard drive that I was using as a temp while sorting thing into permament places. Used it yesterday, no problem. Today, the folder is still there, but shows no files in it, and I am not able to load new files into it. I did a search under "files have disappeared", but did not see any forum threads of a similar nature.
I have absolutely NO access to the internet via that computer. None. All of my internet access is via my phone, with NO bluetooth ability or wifi on that computer to be able to download any programs that would recover my data. Peppermint 10.
 


Most likely lost a mount point.

What is output of ..

df -h
 
these are the outputs both with and without the external hard drive plugged in. All other files and folders on that hard drive work properly.
 

Attachments

  • command with and without ext hdd.png
    command with and without ext hdd.png
    116.1 KB · Views: 122
these are the outputs both with and without the external hard drive plugged in. All other files and folders on that hard drive work properly.
It would be useful if you showed some of the actual output of a search for files. To do that you could run the system with the external disk mounted. In this case, the mounted disk /dev/sdb2 mounted on: /media/mrrussel/Backup. Before looking for files, one can check that the external disk is actually mounted with any of a number of commands like:
Code:
lsblk
findmnt
mount
Then run a few commands to list files, for example:
Code:
ls -al /media/mrrussel/Backup
ls -al /media/mrrussel/Backup/<some_directory>

CORRECTION: (see post #10)
Code:
ls -al /media/mrrussel/'Backup Plus'
ls -al /media/mrussel/'Backup Plus'/<some_directory>

and perhaps in specific directories where you think the files should be:
Code:
ls -alR /media/mrrussel/Backup/<some_directory>

CORRECTION:
Code:
ls -alR /media/mrrussel/'Backup Plus'/<some_directory>

If there are files still missing that you are certain about, then it may be a situation where you need to use some rescuing tools like testdisk or photorec to try and recover them. If they are definitely missing, then it's absolutely best not to write anything more to the external disk so that no more changes occur to its filesystem. Bear in mind that this disk is reported to be used for 76% of its disk space which means it has files taking up about 700G, which is likely a lot of files.[/code]
 
Last edited:
It would be useful if you showed some of the actual output of a search for files. To do that you could run the system with the external disk mounted. In this case, the mounted disk /dev/sdb2 mounted on: /media/mrrussel/Backup. Before looking for files, one can check that the external disk is actually mounted with a number of commands like:
Code:
lsblk
findmnt
mount
Then run a few commands to list files, for example:
Code:
ls -al /media/mrrussel/Backup
and perhaps in specific directories where you think the files should be:
Code:
ls -alR /media/mrrussel/Backup/<some_directory>
If there are files still missing that you are certain about, then it may be a situation where you need to use some rescuing tools like testdisk or photorec to try and recover them. If they are definitely missing, then it's absolutely best not to write anything more to the external disk so that no more changes occur to its filesystem. Bear in mind that this disk is reported to be used for 76% of its disk space which means it has files taking up about 700G, which is likely a lot of files.
ok, will go do that right away and show the results here. Most of that 700 gb is fully accessible, and it is less than
It would be useful if you showed some of the actual output of a search for files. To do that you could run the system with the external disk mounted. In this case, the mounted disk /dev/sdb2 mounted on: /media/mrrussel/Backup. Before looking for files, one can check that the external disk is actually mounted with any of a number of commands like:
Code:
lsblk
findmnt
mount
Then run a few commands to list files, for example:
Code:
ls -al /media/mrrussel/Backup
ls -al /media/mrrussel/Backup/<some_directory>
and perhaps in specific directories where you think the files should be:
Code:
ls -alR /media/mrrussel/Backup/<some_directory>
If there are files still missing that you are certain about, then it may be a situation where you need to use some rescuing tools like testdisk or photorec to try and recover them. If they are definitely missing, then it's absolutely best not to write anything more to the external disk so that no more changes occur to its filesystem. Bear in mind that this disk is reported to be used for 76% of its disk space which means it has files taking up about 700G, which is likely a lot of files.
ok, here is what I have. The first pic shows the drive plugged in, with the file in question highlighted. At the bottom of the screen it shows "0 items" in that file. All of the other files are fully accessible. The 3 screenshots of the terminal commands and their output...I may be entering them improperly.
Also, the difference between the 988 gb shown at the bottom of this first shot and the amount shown for the hard drive in the first screenshot above (921 gb) is the amount that should be in that one folder, so it appears that they are still there. Somewhere.
Sun has set far enough that the solar panels won't drive the weak batteries that I have, and cannot do anything more on the computer until tomorrow.
 
Last edited:
ok, will go do that right away and show the results here. Most of that 700 gb is fully accessible, and it is less than

ok, here is what I have. The first pic shows the drive plugged in, with
ok, will go do that right away and show the results here. Most of that 700 gb is fully accessible, and it is less than

ok, here is what I have. The first pic shows the drive plugged in, with the file in question highlighted. At the bottom of the screen it shows "0 items" in that file. All of the other files are fully accessible. The 3 screenshots of the terminal commands and their output...I may be entering them improperly.
Also, the difference between the 988 gb shown at the bottom of this first shot and the amount shown for the hard drive in the first screenshot above (921 gb) is the amount that should be in that one folder, so it appears thay they are still there. Somewhere.
Sun has set far enough that the solar panels won't drive the weak batteries that I have, and cannot do anything more on the computer until tomorrow.
 

Attachments

  • what I see when highlighting the folder in questions.png
    what I see when highlighting the folder in questions.png
    45.5 KB · Views: 69
  • page 1.png
    page 1.png
    511.6 KB · Views: 79
  • page 2.png
    page 2.png
    539.6 KB · Views: 74
  • page 3.png
    page 3.png
    590.3 KB · Views: 82
Thanks for the outputs.
The significant result appears to be this:
Code:
ls -al /media/mrrussel/Backup/to_sort
ls: cannot access '/media/mrrussle/Backup/to_sort': no such file or directory

From the first image of the graphical output, the directory you are trying to access here appears to have a space in its name:
to sort. In that case, in the terminal, where you used an underscore: to_sort, the ls command finds nothing because there is no directory of that name that it can see. In the terminal, if a filename or directory name has a space in it, it needs to be typed in within quotation marks as follows:
Code:
ls -alR /media/mrrussel/Backup/'to sort'

CORRECTION: (see post #10)
Code:
ls -alR /media/mrrussel/'Backup Plus'/'to sort'

That command should show all files in the directory: 'to sort' and in any sub-directories of that directory, if I'm reading your outputs correctly.

In any case you can check the names of the files and directories above the one in question and see their names in the output with the command:
Code:
ls -al /media/mrrussel/Backup

CORRECTION:
Code:
ls -al /media/mrrussel/'Backup Plus'
Just a note on pasting output. Although enough output seems to have been provided to move on a little on the issue, the image for the output of findmnt is truncated, so it's not all there which makes it a bit difficult for readers. The best way to paste the text output from the terminal into code tags is as outlined in this post: https://linux.org/threads/the-code-tag-and-why-it-matters.57746/#post-276419. That would help :-) .
 
Last edited:
Thanks for the outputs.
The significant result appears to be this:
Code:
ls -al /media/mrrussel/Backup/to_sort
ls: cannot access '/media/mrrussle/Backup/to_sort': no such file or directory

From the first image of the graphical output, the directory you are trying to access here appears to have a space in its name:
to sort. In that case, in the terminal, where you used an underscore: to_sort, the ls command finds nothing because there is no directory of that name that it can see. In the terminal, if a filename or directory name has a space in it, it needs to be typed in within quotation marks as follows:
Code:
ls -alR /media/mrrussel/Backup/'to sort'
That command should show all files in the directory: 'to sort' and in any sub-directories of that directory, if I'm reading your outputs correctly.

Just a note on pasting output. Although enough output seems to have been provided to move on a little on the issue, the image for the output of findmnt is truncated, so it's not all there which makes it a bit difficult for readers. The best way to paste the text output from the terminal into code tags as outlined in this post: https://linux.org/threads/the-code-tag-and-why-it-matters.57746/#post-276419. That would help :-) .
ah! Figured I was doing something wrong, so I will try again tomorrow or whenever the sun comes back out. Never was able to figure out how people did the code tags, so that should be helpful as well!
Thank you!
 
ok, will go do that right away and show the results here. Most of that 700 gb is fully accessible, and it is less than

ok, here is what I have. The first pic shows the drive plugged in, with the file in question highlighted. At the bottom of the screen it shows "0 items" in that file. All of the other files are fully accessible. The 3 screenshots of the terminal commands and their output...I may be entering them improperly.
Also, the difference between the 988 gb shown at the bottom of this first shot and the amount shown for the hard drive in the first screenshot above (921 gb) is the amount that should be in that one folder, so it appears thay they are still there. Somewhere.
Sun has set far enough that the solar panels won't drive the weak batteries that I have, and cannot do anything more on the computer until tomorrow.
Thanks for the outputs.
The significant result appears to be this:
Code:
ls -al /media/mrrussel/Backup/to_sort
ls: cannot access '/media/mrrussle/Backup/to_sort': no such file or directory

From the first image of the graphical output, the directory you are trying to access here appears to have a space in its name:
to sort. In that case, in the terminal, where you used an underscore: to_sort, the ls command finds nothing because there is no directory of that name that it can see. In the terminal, if a filename or directory name has a space in it, it needs to be typed in within quotation marks as follows:
Code:
ls -alR /media/mrrussel/Backup/'to sort'
That command should show all files in the directory: 'to sort' and in any sub-directories of that directory, if I'm reading your outputs correctly.

In any case you can check the names of the files and directories above the one in question and see their names in the output with the command:
Code:
ls -al /media/mrrussel/Backup

Just a note on pasting output. Although enough output seems to have been provided to move on a little on the issue, the image for the output of findmnt is truncated, so it's not all there which makes it a bit difficult for readers. The best way to paste the text output from the terminal into code tags is as outlined in this post: https://linux.org/threads/the-code-tag-and-why-it-matters.57746/#post-276419. That would help :-) .
ok, I am back, and still as confused as ever.
I noticed that previous instructions were to use "ls -al media/...", and the last set of instructions said to use "ls -alR /media/..."
So I tried both, in every possible combination, including with and without parentheses, or the funny little side ways hats, whatever I could think of. Then I realized that the external drive is called "Backup Plus", rather than just "Backup", so I came up with the brilliant idea of just looking for the name of the hard drive itself, and still came up with the results which are included here. So obviously I am doing something wrong. And that brings up another question...I see the menus that you mentioned for posting code here on the phone, but I have no clue as to how to transfer the text from my computer to the phone in order to paste it in so that it comes out in "code tags". Please forgive me for being somewhat incompetent about these things. And one more thing...I also noticed that when I right click on amy folder it gives me the option to "open in terminal". Terminal has always scared me, so I never paid attention to it, but decided to try it. Will post results in a moment, and will try to post it as code content. The result is the same regardless of which folder I choose, with only the name of the folder being different.
 

Attachments

  • Screenshot_2021-06-06_17-37-30.png
    Screenshot_2021-06-06_17-37-30.png
    58.7 KB · Views: 58
Last edited:
Thanks for the output. Firstly, I misread the output in post #3, so I'm sorry for that error. I missed that the Plus was part of the name of the directory.

Please note that I have corrected post #4 and post #7, leaving the original misleading commands but adding what now appear to be the correct commands under the title: CORRECTION.

The correct command therefore appears to be:
Code:
ls -al /media/mrrussel/'Backup Plus'
Since the name of the disk has a space in it, it needs the quotation marks as shown.

That command should show what is in the directory 'Backup Plus'. Then you can change into any directory that is shown in the output, observing the rule that names with spaces need to be quoted. Try that and see what is output.

The alternative to discovering the contents of a directory is to use the TAB key to show the outputs, for example run:
Code:
ls -al /media/mrrussel<TAB>
Here one just writes the name of the known directory /media/mrrussel, and then presses the TAB key (once or twice!) which will show the names of the files or directories that are in that directory at /media/mrrussel. The pointy brackets are delineating the TAB key and are not part of the command, so they are not typed of course. Then one writes the command again in the terminal and with one of the names shown in the output after the TAB key was pressed, noting that any names with spaces need to be quoted.

The confusion created by spaces in names of files and directories which appears to have been the issue here so far, is easily remedied by renaming such names with names without spaces. One can use a few ideas to retain the same sense of the name without spaces, for example: BackupPlus, or Backup_Plus or Backup-Plus instead of 'Backup Plus'.
 
Last edited:
Thanks for the output. Firstly, I misread the output in post #3, so I'm sorry for that error. I missed that the Plus was part of the name of the directory.

Please note that I have corrected post #4 and post #7, leaving the original misleading commands but adding what now appear to be the correct commands under the title: CORRECTION.

The correct command therefore appears to be:
Code:
ls -al /media/mrrussel/'Backup Plus'
Since the name of the disk has a space in it, it needs the quotation marks as shown.

That command should show what is in the directory 'Backup Plus'. Then you can change into any directory that is shown in the output, observing the rule that names with spaces need to be quoted. Try that and see what is output.

The alternative to discovering the contents of a directory is to use the TAB key to show the outputs, for example run:
Code:
ls -al /media/mrrussel<TAB>
Here one just writes the name of the known directory /media/mrrussel, and then presses the TAB key (once or twice!) which will show the names of the files or directories that are in that directory at /media/mrrussel. The pointy brackets are delineating the TAB key and are not part of the command, so they are not typed of course. Then one writes the command again in the terminal and with one of the names shown in the output after the TAB key was pressed, noting that any names with spaces need to be quoted.

The confusion created by spaces in names of files and directories which appears to have been the issue here so far, is easily remedied by renaming such names with names without spaces. One can use a few ideas to retain the same sense of the name without spaces, for example: BackupPlus, or Backup_Plus or Backup-Plus instead of 'Backup Plus'.
ok, back to try again while I still have sunshine! Thank you so much for the assistance! Will let you know shortly what happens.
 
ok, here are the reults. Still trying t
Code:
mrrussel@mrrussel-Optiplex-790 /media/mrrussel/Backup Plus/to sort $_
o figure out how to get text copied from the computer to paste in the code format om the phone. Hard to see, but the area in green does list the folder in question, among the others. Doing the "tab" thing produces the next result, but I have no idea where to go from there...it doesn't let me just keep tabbing to the next folder or whatever. I edited a reply above (#9) to mention having tried something different, then saw your last reply to which this one is addressed.
Here is the hand-entered result in code form. Hopefully, this means we are getting closer to fixing this.
 
Last edited:
ok, here are the reults. Still trying t
Code:
mrrussel@mrrussel-Optiplex-790 /media/mrrussel/Backup Plus/to sort $_
o figure out how to get text copied from the computer to paste in the code format om the phone. Hard to see, but the area in green does list the folder in question, among the others. Doing the "tab" thing produces the next result, but I have no idea where to go from there...it doesn't let me just keep tabbing to the next folder or whatever. I edited a reply above (#9) to mention having tried something different, then saw your last reply to which this one is addressed.
Here is the hand-entered result in code form. Hopefully, this means we are gettimg closer to fixing this.
Yes indeed, you are getting closer to solving this. The output in post #12 indicates that the directory 'to sort', does exist, so is not lost. To see the contents of that directory run:
Code:
ls -al /media/mrrussel/'Backup Plus'/'to sort'
Ensure the quotation marks are there. That should show the files and sub-directories (if any) in the directory 'to sort'.
 
that was the second command entered on that pic. As you can see, it registered "input/output error". Bad comnection apparently prevented this pic from uploading on the previous post, sending it again.
 

Attachments

  • Screenshot_2021-06-06_22-29-40.png
    Screenshot_2021-06-06_22-29-40.png
    265.6 KB · Views: 63
Last edited:
The command: ls -al /media/mrrussel/Backu\ Plus/"to sort" is correct. Unfortunately, the result shown: "Input/output error" is ominous and needs further investigation. Input/output error indicates that the kernel can't access the filesystem, and the reasons are usually that the hard drive is failing, that is, the hardware itself is faulty, or, the filesystem is corrupted. Perhaps check whether the command: ls -al can access any of those other directories that are listed in the output on post #14. Ensure that you use quotation marks where there are spaces in the directory names.
 
All of the other folder names pull up a list of the included subfolders. It seems to be just this one folder that is giving me an issue.
 
All of the other folder names pull up a list of the included subfolders. It seems to be just this one folder that is giving me an issue.
Okay. At least you have access to most of the data.

In the circumstances, with an unknown factor apparent on the external disk, it may be wise to back up all the files that you would like to save. This can be done without writing anything more to the external disk by, for example, using an external live disk and some medium to copy the files to like another external disk, a usb, or another computer to which files can be synched. Back ups can save a lot of anguish.

The unknown factor may be filesystem corruption, or disk failing, or perhaps something else.

In the case of filesystem corruption, one can use the fsck command to correct errors in the filesystem that may have been caused for a number of reasons, like power outages, unscheduled or unclean shutdowns.

To check the filesystem one needs to do so on an unmounted disk, so you'll need to unmount the external drive which has the device name: /dev/sbd2, according to the output of the lsblk command in post #3.

I assume the filesystem on the external drive is ext4, but to check, you can run the command: lsblk -f. The output should look something like the following where it can be seen that the root partition filesystem type is indeed ext4:
Code:
[~]$ lsblk -f
NAME        FSTYPE FSVER LABEL UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
<snip>
└─nvme0n1p3 ext4   1.0         7bb5cb7c-e217-76868-b74e-94848471b4ea  402.6G     8% /

If the external disk is unmounted, then one can use the fsck command, otherwise, to unmount it, you need to have nothing open on it, and no user presence on it, and then run as root:
Code:
umount /dev/sdb2
Then, to have fsck try and repair the filesystem, run as root:
Code:
fsck -p /dev/sdb2
Note any information or errors on screen and if all seems okay, reboot and try to access the problematical directory again. To check the options for fsck on ext4 you can check out the man page with: man fsck.ext4.

There are possible obstacles in this process but information on screen should let you know what's happening.
 
Last edited:
Okay. At least you have access to most of the data.

In the circumstances, with an unknown factor apparent on the external disk, it may be wise to back up all the files that you would like to save. This can be done without writing anything more to the external disk by, for example, using an external live disk and some medium to copy the files to like another external disk, a usb, or another computer to which files can be synched. Back ups can save a lot of anguish.

The unknown factor may be filesystem corruption, or disk failing, or perhaps something else.

In the case of filesystem corruption, one can use the fsck command to correct errors in the filesystem that may have been caused for a number of reasons, like power outages, unscheduled or unclean shutdowns.

To check the filesystem one needs to do so on an unmounted disk, so you'll need to unmount the external drive which has the device name: /dev/sbd2, according to the output of the lsblk command in post #3.

I assume the filesystem on the external drive is ext4, but to check, you can run the command: lsblk -f. The output should look something like the following where it can be seen that the root partition filesystem type is indeed ext4:
Code:
[~]$ lsblk -f
NAME        FSTYPE FSVER LABEL UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
<snip>
└─nvme0n1p3 ext4   1.0         7bb5cb7c-e217-76868-b74e-94848471b4ea  402.6G     8% /

If the external disk is unmounted, then one can use the fsck command, otherwise, to unmount it, you need to have nothing open on it, and no user presence on it, and then run as root:
Code:
umount /dev/sdb2
Then, to have fsck try and repair the filesystem, run as root:
Code:
fsck -p /dev/sdb2
Note any information or errors on screen and if all seems okay, reboot and try to access the problematical directory again. To check the options for fsck on ext4 you can check out the man page with: man fsck.ext4.

There are possible obstacles in this process but information on screen should let you know what's happening.
ummm...to me, this is confusing. I never "mount" my external drives, simply plug the usb cord in and then it works. Or doesn't. So I have been assuming that when people use that term, it means the same thing. Which means that when we talk about doing a proceedure on an "unmounted disk", my brain immediately screams "aaaarrrrggghhhh!!!" and then I huddle in the corner.
Not really, but it does confuse me. User presence? dev/sb2 (ok, I did look back at that and now understand that is a designation given by the computer to the external hard drive "Backup Plus". Whew! )? Ext4? This is way over my head. My apologies, but I really know almost nothing about programming.
Everything on that drive has already been backed up, except of course for the one folder I was using as a temp while sorting stuff into the appropriate files and drives (in duplicate), the one which is giving me issues.
Thanks again for sticking with me here!
 
Last edited:
ummm...to me, this is confusing. I never "mount" my external drives, simply plug the usb cord in and then it works. Or doesn't. So I have been assuming that when people use that term, it means the same thing. Which means that when we talk about doing a proceedure on an "unmounted disk", my brain immediately screams "aaaarrrrggghhhh!!!" and then I huddle in the corner.
Not really, but it does confuse me. User presence? dev/sb2 (ok, I did look back at that and now understand that is a designation given by the computer to the external hard drive "Backup Plus". Whew! )? Ext4? This is way over my head. My apologies, but I really know almost nothing about programming.
Everything on that drive has already been backed up, except of course for the one folder I was using as a temp while sorting stuff into the appropriate files and drives (in duplicate), the one which is giving me issues.
Thanks again for sticking with me here!
This process is certainly capable of being very confusing when working with commands, concepts and processes that are not clear to the user. The following may help with some clarification.

From your report, the operating system appears to mount the external disk automatically, which is commonly the case when running a fully featured distro. It enables the user to access the mounted partition or drive seamlessly without further ado.

The effective meaning of "mounting" a drive, is that it becomes available for the system to use from a specific location called the mount point. In your case, that mount point is /media/mrrussel according to the output shown in post #2.

Because the external disk is mounted automatically, both the user, and the system's own internal processes running on the system, can change files and file properties. Even when the user is not changing files, the system may be doing so itself in the background such as writing log files, caching data, working with temporary files, and more.

The "ext4" filesystem type, shown in the FSTYPE column in the example output in post #17, refers to the data storage format specifying info about the files that are stored, their names, other identifying data, their locations on the disk, sizes, file types etc. It's lots of data about the files. The storage data format in this case has the name ext4. It stands for the "4th extended filesystem" because it's the fourth iteration of what started out just as "ext" years ago and has been developed and upgraded since.

It should be clear that if any of the many file details in the filesystem data are changing, it would interfere with the process of checking those very same details. The fsck command checks and repairs issues and inconsistencies in this data. Unmounting stops the interfering activity by disabling writing to the partition. Therefore, filesystem checking is best done where the relevant partition
(/dev/sdb2 in your case) is unmounted. File checking on a mounted filesystem risks further damage to it. Note: the expression "you have been warned" is often included as advice at this point on this matter, so I include it out of respect for the filesystem :-) .

Hopefully you can derive something from the above which can put the process described Post #17 in a more comprehensible context.
 
Last edited:
This process is certainly capable of being very confusing when working with commands, concepts and processes that are not clear to the user. The following may help with some clarification.

From your report, the operating system appears to mount the external disk automatically, which is commonly the case when running a fully featured distro. It enables the user to access the mounted partition or drive seamlessly without further ado.

The effective meaning of "mounting" a drive, is that it becomes available for the system to use from a specific location called the mount point. In your case, that mount point is /media/mrrussel according to the output shown in post #2.

Because the external disk is mounted automatically, both the user, and the system's own internal processes running on the system, can change files and file properties. Even when the user is not changing files, the system may be doing so itself in the background such as writing log files, caching data, working with temporary files, and more.

The "ext4" filesystem type, shown in the FSTYPE column in the example output in post #17, refers to the data storage format specifying info about the files that are stored, their names, other identifying data, their locations on the disk, sizes, file types etc. It's lots of data about the files. The storage data format in this case has the name ext4. It stands for the "4th extended filesystem" because it's the fourth iteration of what started out just as "ext" years ago and has been developed and upgraded since.

It should be clear that if any of the many file details in the filesystem data are changing, it would interfere with the process of checking those very same details. The fsck command checks and repairs issues and inconsistencies in this data. Unmounting stops the interfering activity by disabling writing to the partition. Therefore, filesystem checking is best done where the relevant partition
(/dev/sdb2 in your case) is unmounted. File checking on a mounted filesystem risks further damage to it. Note: the expression "you have been warned" is often included as advice at this point on this matter, so I include it out of respect for the filesystem :-) .

Hopefully you can derive something from the above which can put the process described Post #17 in a more comprehensible context.
that is helpful. Now I will go back and reread this a few times while I wait for the sun to come out again and hopefully be able to make enough sense of it to be able to follow these directions properly.
Here are the results:

(clouds coming back.in, gotta shut the puter down for the rest of the day now)
 

Attachments

  • Screenshot_2021-06-06_17-18-44.png
    Screenshot_2021-06-06_17-18-44.png
    87.5 KB · Views: 53
Last edited:


Follow Linux.org


Top