move files within a directory to another directory - raspberry-pi

I am currently working on a Raspberry Pi that is capturing images 24/7. I am wanting to delete the files in a directory A (where the images are stored) without deleting the directory itself. I know that shutil.rmtree will remove the directory(A) but I have other programs sending files to that directory(A) all the time. So the instant a file is trying to come into a directory A and it does not exist it crashes my Raspberry Pi.
I know that I can move the files within a directory(A) to another directory(B). However using the shutil.copytree or shutilmove only copies the files to my directory B. It does not "cut" the files just copy them.
The only reason I want to do this is because file space is limited and the Raspberry Pi is running 24/7.
Any ideas would be helpful.

Related

Cannot run file in google drive directory (using file syncing) because of white space in 'My Drive'

I'm writing a game in Lua using Löve2D using google drive syncing for backup, meaning I am directly editing the file in my drive. This means the file path is "G/My Drive/Truck" (Truck is the name of the game folder). When I open the folder in VS Code it works fine and I can access and edit everything, but when I actually try to run the main.lua with the alt+L command I get this error:
boot.lua:577: Cannot load game at path 'g:/My'.
Make sure a folder exists at the specified path.
I'm not sure if it's Löve itself or if it's VS Code which can't cope with the white space.
I have previously accessed, edited and run the file with no issue on a different computer, but am now trying to do so on my laptop, and am encountering this issue.
OS is Windows 11.
I've tried opening "G/My_Drive/Truck" which doesn't work. Since it's google drive I can't just rename it to remove the whitespace.
According to the error message you've provided, Lua does not receive a full path to your folder, just a small piece: 'g:/My'
This usually happens when you pass a string that contains a whitespace by command line like this:
love.exe game.love G:/My Drive/Truck
How to fix:
love.exe game.love "G:/My Drive/Truck"
If that does not help, then post more details: how do you launch it, where path to your gdrive folder is stored.

Keep VS Code from creating new directories when file system unmounts

I am running VS Code on a Windows machine running Ubuntu on WSL 2 that mounts a remote drive from a Linux server using FUSE. This allows me to edit comfortably on VS Code while I run the documents on the server and it generally works great. However, if I am editing and my computer loses its Internet connection briefly, the FUSE mount is lost. If I am in the middle of editing and don't notice, then when I save it, VS Code will see nothing in the directory and create a bunch of directories and save the file locally, which is not what I want to do.
For example, I might be editing a file that is in the mount folder, which is the remote mount. I work on the file mount/somedir/somedir2/someFile.txt. If the Internet connection drops, the remote filesystem is unmounted. If I click Ctrl-s, then VS Code sees only an empty folder called mount. It then creates a somedir directory, then a somedir2 directory, then a someFile.txt file, and saves it there. It is often some time before I catch the problem, and while it is resolvable, I end up with multiple versions of the same file (one on my computer and one on the server) and rationalizing the two is a pain and, if I do it wrong, can end up with me losing work and data (which has happened).
Is there a way to tell VS Code to give an error message when attempting to save a file to a suddenly nonexistent directory, rather than creating it automatically for me? That would make my life much easier.

Powershell copy vs move cmd

I'm running into some issues with my existing powershell script that copies data from a remote location into a local folder - that local folder also happens to be sync'd with google drive for desktop.
I'm seeing incomplete files being uploaded etc. In order to combat this I think it would be easier/better to change where the initial remote > local is putting its files, and instead of copying directly into the sync folder - copy into a temp/staging location that's NOT the sync folder.
Once that process is complete then use the powershell move-cmd to simply 'move' which will just update file locators to be that of the sync folder.
I think this will solve my issue.
Anyone see any problems with this approach?
If you have ruled out device connectivity, multiple files being uploaded at once vs. a single file being uploaded, and mobile device app or internet browser there is nothing wrong with your approach. If you need anymore assistance please reply to this thread or mark this as the answer.

Multiple PowerShell scripts to monitor a folder

I'm opening this one as it's related to another thread I've opened but not the same problem.
I currently have 2 scripts to monitor a folder. In this folder (a sharepoint site folder), is a powerpoint presentation running on a remote laptop. The goal is to have the possibility to change the presentation without having to go to the laptop itself (as there will eventually be a large number of them in remote locations).
So what I'm doing so far is a scrip1 that monitors when a file is dropped in the folder. This script then shut downs the presentation currently running.
Another script monitors if a ppt file is renamed in the folder (as the instructions will be: 1-dump your file 2-delete Slide.pptx 3- rename your new file as Slide.pptx). I then kicks off Powerpoint with the presentation file.
But don't know how to have both scripts running at the same time. Even having 1 calling 2 and when 2 has run it calls 1 again.
Any ideas ?
Thanks
Don't reinvent. You can use PowershellGuard. Original ruby guard is also what I have used for this purpose (it is way more mature).
Guards allow you to run multiple scripts mapped to file specification.

Portable Eclipse

I'm trying to port my entire 'workspace' to a USB key (including the Eclipse executable) so that I can carry my work anywhere with me and work off the key directly.
My directory hierarchy is similar to this:
/workspace/eclipse - Where my current eclipse binary is stored
/workspace/codebase - Where I keep the root of all my eclipse projects
/workspace/resources - Where I keep all project files (images, docs, libs, etc.)
It all works perfectly fine on one system. But when I change over to another system, the USB key gets mounted on another drive. For example, on my laptop, I get 'E:\', on my PC, I get 'K:\' and at work I get 'F:\', etc, etc.
This means that because Eclipse (for 'some' reason) seems to only use full path names (including driver letters) in every single one of its configuration files (such as .classpath), nothing ever works when I want to work on another system.
I put a 'libs' directory in the base of every project and populate it with its dependent JAR files. Why doesn't it use relative names instead, so that I could specify something like "../../libs/log4j.jar"?
Anyone know how to fix this problem? Does anyone know of a workaround for this?
Update: 2010.11.09
I've recently discovered Dropbox, which allows you to sync your files online and across your computers automatically with extreme ease. It includes 2GB of free space and you can upgrade to much more if you want (for a yearly fee).
I installed it on my two laptops, my two PC's, my Linux server and my Android phone and then I created a 'workspace' directory within the 'My Dropbox' folder. From the 'workspace' directory, I then installed Eclipse and created/configured all my projects as usual. I can literally work from any computer and everything always stays perfectly in sync. This is way better than any USB key functionality and its hassle!
Have you tried using Eclipse Portable?
The only thing to keep in mind is that when switching the workspace, you need to remember to give it a relative path (like ../../Data/workspace).
You could use the dos command subst to get a consistent drive letter by creating a new virtual drive letter (say x:) that maps to your Eclipse folder on your usb drive, and then make all the config paths reference the drive x:
You could make a little batch file on the usb drive that you click on to create the drive x:
C:\>help subst
Associates a path with a drive letter.
SUBST [drive1: [drive2:]path]
SUBST drive1: /D
drive1: Specifies a virtual drive to which you want to assign a path.
[drive2:]path Specifies a physical drive and path you want to assign to
a virtual drive.
/D Deletes a substituted (virtual) drive.
Type SUBST with no parameters to display a list of current virtual drives.
You could also remap letter for your USB stick in Windows Disk Management (subitem in Computer management) to be smth like 'U:'.
Once done, it will be re-assigned to same stick every time you plug it. Not very universal, since your user need rights to access this setting first time, but it could help in some different scenarios.
You can always use Ant to build your programs, with Ant you can have relative paths... Plus you can also use Ivy to track dependencies in Ant, I do that in every project that I have.
Another alternative is to manually edit your .classpath files to contain relative paths.
It is a bit of a hassle, though, as you'll have to manually update the files whenever Eclipse changes them.