Corbeille
Problem
Deleted files in ibays or in users home directories on the server are lost forever.
Scenario
This has been a long known issue for network admins. Files stored on another computer/server. Accidentaly hit the DELETE key. Poof! Gone. Files aren't in the local Recycle bin on the local computer. This is especially frustrating for admins who map profile parts back to the server. The users desktop, documents, etc never find their way into the local recycle bin as the users expect.
Enable Recycle Bin for ibays
db accounts setprop ibayname RecycleBin enabled db accounts setprop ibayname KeepVersions enabled signal-event ibay-modify ibayname
The first property enables the Recycle Bin feature. The second property KeepVersions ensures that when a file is deleted with the same name as one that was previously deleted the latest deleted file will be called “Copy #x of filename”.
Enable Recycle Bin for users
db configuration setprop smb RecycleBin enabled db configuration setprop smb KeepVersions enabled
Expand the template...
/sbin/e-smith/expand-template /etc/samba/smb.conf
Remember to restart service...
/etc/rc7.d/S91smb restart
The Recycle Bin folder will be created automatically the first time a file is deleted, so you will not see the folder until you delete something.
An admin can then go and retrieve the files on the server.
Recycle Bin Locations
For ibays the Recycle Bin is located at:
/home/e-smith/files/ibays/ibayname/files/Recycle Bin
For users the Recycle Bin is located at:
/home/e-smith/files/users/username/home/Recycle Bin
Automatic Cleaning Of Recycle Bin Content
The simple script below can be used to clean out the various Recycle Bins on a regular basis.
Note that this script is setup to use the last changed file attribute to selectively deletes files after they have been in the Recycle Bin for 30 days.
Setup the script to run either daily or weekly from cron.
#!/bin/bash # ensure finds includes hidden files in the Recycle Bins shopt -s dotglob echo "+------------------------------------------------------------------------------+" echo "| Samba recycle-bin cleaner |" echo "+------------------------------------------------------------------------------+" URF=$(find /home/e-smith/files/users/*/home/Recycle\ Bin/* -type f -ctime +30) if [ "$URF" != "" ] then printf "| %-76s |\n" "The following user recycle bin files were deleted:" IFS=$'\n' for file in $URF do printf "| - %-74s |\n" "$file" rm -f "$file" done else printf "| %-76s |\n" "There were no old user recycle bin files to delete." fi echo "+------------------------------------------------------------------------------+" IRF=$(find /home/e-smith/files/ibays/*/files/Recycle\ Bin/* -type f -ctime +30) if [ "$IRF" != "" ] then printf "| %-76s |\n" "The following ibays recycle bin files were deleted:" IFS=$'\n' for file in $IRF do printf "| - %-74s |\n" "$file" rm -f "$file" done else printf "| %-76s |\n" "There were no old ibays recycle bin files to delete." fi echo "+------------------------------------------------------------------------------+" URD=$(find /home/e-smith/files/users/*/home/Recycle\ Bin/* -type d -empty) if [ "$URD" != "" ] then printf "| %-76s |\n" "The following users recycle bin directories were deleted:" IFS=$'\n' for folder in $URD do printf "| - %-74s |\n" "$folder" rm -rf "$folder" done else printf "| %-76s |\n" "There were no old user recycle bin directories to delete." fi echo "+------------------------------------------------------------------------------+" IRD=$(find /home/e-smith/files/ibays/*/files/Recycle\ Bin/* -type d -empty) if [ "$IRD" != "" ] then printf "| %-76s |\n" "The following ibays recycle bin directories were deleted:" IFS=$'\n' for folder in $IRD do printf "| - %-74s |\n" "$folder" rm -rf "$folder" done else printf "| %-76s |\n" "There were no old ibays recycle bin directories to delete." fi echo "+------------------------------------------------------------------------------+"
Changing the Recycle Bin name
You can change the name of the recycle bin by making a copy of the template fragment into the templates-custom tree and making your modifications there.
- Create the proper folder structure: mkdir -p /etc/e-smith/templates-custom/etc/smb.conf/ibays
- Copy the template fragment to the template-custom tree cp /etc/e-smith/templates/etc/smb.conf/ibays/10recyclebin /etc/e-smith/templates-custom/etc/smb.conf/ibays
- Use any editor to make your changes in the copied file
nano /etc/e-smith/templates-custom/etc/smb.conf/ibays/10recyclebin
Modifying this line:
$vfs->{recycle}->{repository} = "Recycle Bin";
to whatever you like for a name:
$vfs->{recycle}->{repository} = "Add your name here";
- Now let the server take the necessary actions to have the changes reflected for all ibays (replace <ibayname> with the ibayname): signal-event ibay-modify <ibayname>