ClunkClunk Posted December 7, 2016 Share Posted December 7, 2016 Idea: A script that dumps an inventory of each disk using the 'tree' command (tree /mnt/disk1 > /boot/config/diskContents/disk1/$timestamp.txt) It should be able to 'logrotate' so we're keeping X (14?) number of days history. I started this a few months ago, but never got around to really optimizing it and rotating out old listings or compressing them. But hopefully it'll give you a starting point! #!/bin/sh DISKS=8 COUNTER=1 THEDATE=`date +"%Y-%m-%d_%H-%M-%S"` LOCATION="/boot/trees" echo " " echo " " echo "Starting tree scanning" while [ $COUNTER -le $DISKS ] do echo "Scanning tree for disk$COUNTER/Movies" tree -h /mnt/disk$COUNTER/Movies >> "$LOCATION/$THEDATE.movies.log" echo "Scanning tree for disk$COUNTER/TV" tree -h /mnt/disk$COUNTER/TV >> "$LOCATION/$THEDATE.tv.log" echo "Incrementing disk counter" COUNTER=$[$COUNTER+1] done echo "Scanning tree for cache/Movies" tree -h /mnt/cache/Movies >> "$LOCATION/$THEDATE.movies.log" echo "Scanning tree for cache/TV" tree -h /mnt/cache/TV >> "$LOCATION/$THEDATE.tv.log" echo "All done scanning disks. Beginning scanning shares." echo "Scanning tree for user/Movies" tree -h /mnt/user/Movies >> "$LOCATION/$THEDATE.movies.log" echo "Scanning tree for user/TV" tree -h /mnt/user/TV >> "$LOCATION/$THEDATE.tv.log" echo " " echo " " echo "Complete! Logs stored in $LOCATION" 1 Quote Link to comment
glave Posted December 8, 2016 Share Posted December 8, 2016 Idea: A script that dumps an inventory of each disk using the 'tree' command (tree /mnt/disk1 > /boot/config/diskContents/disk1/$timestamp.txt) It should be able to 'logrotate' so we're keeping X (14?) number of days history. I started this a few months ago, but never got around to really optimizing it and rotating out old listings or compressing them. But hopefully it'll give you a starting point! I'm working on it, but I managed to come up with the guts of it, now I just gotta make it all pretty code! I had it create entries in my temp share for the moment. I'll move it all to the flash drive when I polish this up. for f in /mnt/disk*;do mkdir -p /mnt/user/temp/$(basename $f);tree -o /mnt/user/temp/$(basename $f)/$(date +%Y%m%d).txt "$f";done Quote Link to comment
glave Posted December 10, 2016 Share Posted December 10, 2016 Well, this was easier than I thought. This is a pretty basic script that runs the 'tree' command against each of your array disks, creating a txt of their contents. My primary purpose for this is to serve as an archive of my array contents in case I have a catastrophic failure, then I can easily discern what I'm missing and start rebuilding from backups/etc. Default save directory goes to your flash drive in a subfolder called indexTree, with subfolders named for each disk containing a date stamped txt file. #!/bin/sh # Tree Index Array #description=Creates an inventory tree of all mounted disks (not cache) #arrayStarted=true SAVEPATH=/boot/config/indexTree for f in /mnt/disk* do echo "Scanning tree for $f" mkdir -p $SAVEPATH/$(basename $f) tree -o $SAVEPATH/$(basename $f)/$(date +%Y%m%d).txt "$f" done echo "indexTree complete!" exit 0 tree_index_array_drives.zip 2 1 1 Quote Link to comment
mckenna654 Posted December 13, 2016 Share Posted December 13, 2016 Can rsyncs be run using this plugin? I get the following errors when I try to. rsync: connection unexpectedly closed (0 bytes received so far) [Receiver] rsync error: unexplained error (code 255) at io.c(226) [Receiver=3.1.2] Here's an rsync script I put together. Please excuse if the echos are a little off. Make sure to tweak it to match your cloud service. I suggest checking out http://rclone.org/commands/rclone_sync/ and http://rclone.org/crypt/ #!/bin/bash echo "<div style=' width: 40%; -webkit-border-radius: 8px 8px 0 0; border-radius: 8px 8px 0 0; border: solid 1px #cccccc; background-color: #ffe88a; padding-left: 10px;'><br><b><font color='black' size='2'>Backing-Up to BackBlaze B2 </font><b><br> </div>" #echo "=======================" #echo "Encryption enabled" #echo "Backing-up from:" #echo " <b><font color='blue'>backup share "</b></font>" #echo "to:" #echo " <b><font color='blue'>"Backblaze B2 sbucket </b></font>" echo "<div style='width: 40%; -webkit-border-radius: 0 0 8px 8px; border-radius: 0 0 8px 8px; background-color: #ebebeb; margin-top: -14px; padding-left: 10px; padding-top: 6px;border: solid 1px #cccccc; '>Backing-up from: <br><b><font color='blue' size='2'>"backup share "</b></font> <br>to:<br><b><font color='blue' size='2'>"Backblaze B2 sbucket "</b></font><br> </div>" rclone sync /mnt/user/backup secret:/ echo "" echo "<div style='padding-left: 10px; margin-top: -14px; '><font color='green' size='4'><b>Done!</b></font></div>" backup is my backup share and secret is my encrypted bucket on Backblaze B2. Quote Link to comment
Squid Posted January 7, 2017 Author Share Posted January 7, 2017 I was looking at the Mover code at a specific threshold script, however I was trying to figure out how to move oldest folder from a Disk to another Disk at a specific threshold. I normally move the oldest folder from a specific folder simply to reduce Disk spin ups across my array. Has anybody ever worked on something like that or could you throw me a bone on how to modify what somebody else has already done into something of the sort that I have slapped together? My reasoning is I move "All" my files from my windows machine to: Disk3 then to Disk5 for archiving Disk2 then to Disk4 for archiving Here is what my Slapped together code that works if I manually run it, but I'd like to incorporate Threshold into it: #!/bin/sh OLD="disk3" NEW="disk5" MoveSearch="`ls -t /mnt/$OLD/Movies/All/ | tail -n 1`" echo moving $MoveSearch mv /mnt/$OLD/Movies/All/$MoveSearch /mnt/$NEW/Movies/All/ echo $MoveSearch move complete /usr/local/emhttp/plugins/dynamix/scripts/notify -e "Recovering Space" -d "Moving $MoveSearch from $OLD to $NEW" -i "normal" -m "Moved $MoveSearch from $OLD to $NEW" The OLD and NEW Variable isn't required, but I just decided a while back it was easier for me to just drop it in so I could wash, rinse and repeat without digging in the code often when I wanted to run on multiple disks and reduce the error factor. Maybe someday I'll get fancy with it, but figured if I had a threshold script I could just let it run often and not worry about it. I attempted for simplicity sake to just make a call from the mover script to what I've done, but apparently I messed things up and it just doesn't work. I deleted what I did a while back and just remembered recently and figured why not just ask here. ok... How about this: (it's actually a lot simpler than it looks ) #!/usr/bin/php <?PHP # description=Moves a folder based upon utilization # arrayStarted=true $source = "/mnt/disk1/test"; # Note that mixing disk shares and user shares here will result in corrupted files $destination = "/mnt/disk2/test"; # Use either disk or user shares. Not both. $moveAt = 90; # Utilization % on the source to trigger the moves $moveOldest = true; # true moves the oldest files/folders first. false moves the newest files/folders first $emptySource = false; # false stops the moves when utilization drops below $moveAt. true will move all of the files / folders $runDuringCheck = false; # false pauses the moves during a parity check/rebuild. true continues copying $checkSleepTime = 300; # seconds to delay before checking if a parity check is still in progress $deleteDestination = true; # false if the destination file/folder already exists skips copying. true deletes the version on the destination and then copies $abortOnError = true; # true aborts move operations if one of them results in an error. false carries on with other files/folders $finishScript = false; # false do nothing. Set to something like "/boot/my_scripts/customScript.sh" to run a custom script at the completion of copying (notifications?) $fullLogging = false; # set to true for full logging. Useful for debugging. function runMove() { global $source, $moveAt; $percent = (disk_total_space($source) - disk_free_space($source)) / disk_total_space($source) * 100; return ($percent > $moveAt); } function logger($string) { global $fullLogging; if ( $fullLogging ) { echo $string; } } if ( ! runMove() ) { echo "Set conditions to move are not met. Exiting\n"; exit(); } $raw = array_diff(scandir($source),array(".","..")); if ( ! $raw ) { echo "$source does not exist or is already empty\n"; exit(); } foreach ($raw as $entry) { $sourceContents[$entry] = filemtime("$source/$entry"); } if ( $moveOldest ){ asort($sourceContents); } else { arsort($sourceContents); } logger(print_r($sourceContents,true)); $contents = array_keys($sourceContents); exec("mkdir -p ".escapeshellarg($destination)); foreach ( $contents as $entry ) { if ( ! $emptySource ) { if ( ! runMove() ) { break; } } if ( ! $runDuringCheck ) { while ( true ) { $unRaidVars = parse_ini_file("/var/local/emhttp/var.ini"); if ( ! $unRaidVars["mdResyncPos"] ) { break; } logger("Parity Check / Rebuild in progress. Pausing $checkSleepTime seconds\n"); sleep($checkSleepTime); } } if ( is_dir("$destination/$entry") ) { echo "$destination/$entry already exists. "; if ( $deleteDestination ) { echo "Deleting prior to moving.\n"; exec("rm -rf ".escapeshellarg("$destination/$entry")); } else { echo "Skipping.\n"; continue; } } echo "Moving $source/$entry to $destination/$entry\n"; exec("mv ".escapeshellarg("$source/$entry")." ".escapeshellarg("$destination/$entry"),$output,$returnValue); if ( $returnValue ) { echo "An error occurred moving $source/$entry to $destination/$entry "; if ( $abortOnError ) { echo "Aborting\n"; exit(); } else { echo "Continuing\n"; } } } if ( $finishScript ) { exec($finishScript,$finishOut); foreach ($finishOut as $line) { echo "$line\n"; } } ?> Allows you to set the threshold of utilization on the source to trigger the move Moves are selectable to either completely move the source or to stop after the threshold has been reached Move either the oldest folders or the newest folders first Option to pause during a parity check / rebuild Option to skip if the folder to be moved already exists in the destination or to delete it and copy Option to skip or abort if an error happens during the copy Option to run a custom script (ie: notifications) upon completion. Quote Link to comment
kizer Posted January 7, 2017 Share Posted January 7, 2017 Holly Molly. Thank you so much for putting in the Time for something I really felt "I" needed. Hopefully others might feel the benifit from this. Now I can better automate my move files around based on what I don't use as much. Ive also started tinkering around with my SSD drive seen as part of the user shares, but I disabled the mover so now I can have some help moving files when I want them and where I want them. Quote Link to comment
kizer Posted January 8, 2017 Share Posted January 8, 2017 Ran the Threshold Script you wrote. Is there any way to force folders to keep their creation Date? Or does this script create brand new folders opposed to copying folders? Quote Link to comment
Squid Posted January 8, 2017 Author Share Posted January 8, 2017 Ran the Threshold Script you wrote. Is there any way to force folders to keep their creation Date? Or does this script create brand new folders opposed to copying folders? It uses mv the same as yours. Your sample didn't preserve times, so mine didn't either But, its a simple change #!/usr/bin/php <?PHP # description=Moves a folder based upon utilization # arrayStarted=true $source = "/mnt/disk2/test1"; # Note that mixing disk shares and user shares here will result in corrupted files $destination = "/mnt/disk1/test1"; # Use either disk or user shares. Not both. $moveAt = 90; # Utilization % on the source to trigger the moves $moveOldest = true; # true moves the oldest files/folders first. false moves the newest files/folders first $emptySource = false; # false stops the moves when utilization drops below $moveAt. true will move all of the files / folders $runDuringCheck = false; # false pauses the moves during a parity check/rebuild. true continues copying $checkSleepTime = 300; # seconds to delay before checking if a parity check is still in progress $deleteDestination = true; # false if the destination file/folder already exists skips copying. true deletes the version on the destination and then copies $abortOnError = true; # true aborts move operations if one of them results in an error. false carries on with other files/folders $finishScript = false; # false do nothing. Set to something like "/boot/my_scripts/customScript.sh" to run a custom script at the completion of copying (notifications?) $fullLogging = true; # set to true for full logging. Useful for debugging. function runMove() { global $source, $moveAt; $percent = (disk_total_space($source) - disk_free_space($source)) / disk_total_space($source) * 100; return ($percent > $moveAt); } function logger($string) { global $fullLogging; if ( $fullLogging ) { echo $string; } } if ( ! runMove() ) { echo "Set conditions to move are not met. Exiting\n"; exit(); } $raw = array_diff(scandir($source),array(".","..")); if ( ! $raw ) { echo "$source does not exist or is already empty\n"; exit(); } foreach ($raw as $entry) { $sourceContents[$entry] = filemtime("$source/$entry"); } if ( $moveOldest ){ asort($sourceContents); } else { arsort($sourceContents); } logger(print_r($sourceContents,true)); $contents = array_keys($sourceContents); exec("mkdir -p ".escapeshellarg($destination)); foreach ( $contents as $entry ) { if ( ! $emptySource ) { if ( ! runMove() ) { break; } } if ( ! $runDuringCheck ) { while ( true ) { $unRaidVars = parse_ini_file("/var/local/emhttp/var.ini"); if ( ! $unRaidVars["mdResyncPos"] ) { break; } logger("Parity Check / Rebuild in progress. Pausing $checkSleepTime seconds\n"); sleep($checkSleepTime); } } if ( is_dir("$destination/$entry") ) { echo "$destination/$entry already exists. "; if ( $deleteDestination ) { echo "Deleting prior to moving.\n"; exec("rm -rf ".escapeshellarg("$destination/$entry")); } else { echo "Skipping.\n"; continue; } } echo "Moving $source/$entry to $destination/$entry\n"; exec("mv ".escapeshellarg("$source/$entry")." ".escapeshellarg("$destination/$entry"),$output,$returnValue); if ( $returnValue ) { echo "An error occurred moving $source/$entry to $destination/$entry "; if ( $abortOnError ) { echo "Aborting\n"; exit(); } else { echo "Continuing\n"; } } else { exec("touch --date=@".$sourceContents[$entry]." ".escapeshellarg("$destination/$entry")); } } if ( $finishScript ) { exec($finishScript,$finishOut); foreach ($finishOut as $line) { echo "$line\n"; } } ?> or, if you've changed things around, Change exec("mv ".escapeshellarg("$source/$entry")." ".escapeshellarg("$destination/$entry"),$output,$returnValue); if ( $returnValue ) { echo "An error occurred moving $source/$entry to $destination/$entry "; if ( $abortOnError ) { echo "Aborting\n"; exit(); } else { echo "Continuing\n"; } } to exec("mv ".escapeshellarg("$source/$entry")." ".escapeshellarg("$destination/$entry"),$output,$returnValue); if ( $returnValue ) { echo "An error occurred moving $source/$entry to $destination/$entry "; if ( $abortOnError ) { echo "Aborting\n"; exit(); } else { echo "Continuing\n"; } } else { exec("touch --date=@".$sourceContents[$entry]." ".escapeshellarg("$destination/$entry")); } Quote Link to comment
thomast_88 Posted January 8, 2017 Share Posted January 8, 2017 Very simple script which will resume paused/suspended vms or start shut off vms. #!/bin/sh #description=Start / resume all VMs #arrayStarted=true virsh list --all | grep -E "(paused|suspended)$" | awk '{$1=""; print $0}' | sed -e 's/paused//g; s/suspended//g' | while read domain do echo "Resuming $domain ..." virsh resume "$domain" echo "Resuming $domain ..." done virsh list --all | grep -E "(shut off)$" | awk '{$1=""; print $0}' | sed -e 's/shut off//g' | while read domain do echo "Starting $domain ..." virsh start "$domain" echo "Started $domain ..." done 1 Quote Link to comment
kizer Posted January 8, 2017 Share Posted January 8, 2017 Squid Thanks for the code Changes on the Preserving the Date. I know, I know I didn't have it in mine either. Difference is I have zero clue of what I'm doing. Lol Quote Link to comment
Helmonder Posted January 15, 2017 Share Posted January 15, 2017 The following will do a btrfs scrub and report back the results through the notification interface, I have scheduled this monthly: /usr/local/emhttp/plugins/dynamix/scripts/notify -e "start_scrub_cache" -s "Scrub cache drive" -d "Scrub of cache drive started" -i "normal" -m "Scrubbing message" btrfs scrub start -rdB /mnt/cache > /boot/logs/scrub_cache.log if [ $? -eq 0 ] then /usr/local/emhttp/plugins/dynamix/scripts/notify -e "start_scrub_cache" -s "Scrub cache drive" -d "Scrub of cache drive finished" -i "normal" -m /boot/logs/scrub_cache.log else /usr/local/emhttp/plugins/dynamix/scripts/notify -e "start_scrub_cache" -s "Scrub cache drive" -d "Error in scrub of cache drive !" -i "alert" -m /boot/logs/scrub_cache.log fi The following does an hourly check on Out of Memory errors in the syslog, I scheduled this hourly: if grep -q "Out of memory" /var/log/syslog; then /usr/local/emhttp/plugins/dynamix/scripts/notify -e "OOM Checker" -s "Checked for OOM in syslog" -d "OOM error found in syslog" -i "alert" fi 1 Quote Link to comment
Squid Posted January 15, 2017 Author Share Posted January 15, 2017 The following will do a btrfs scrub and report back the results through the notification interface, I have scheduled this monthly: /usr/local/emhttp/plugins/dynamix/scripts/notify -e "start_scrub_cache" -s "Scrub cache drive" -d "Scrub of cache drive started" -i "normal" -m "Scrubbing message" btrfs scrub start -rdB /mnt/cache > /boot/logs/scrub_cache.log if [ $? -eq 0 ] then /usr/local/emhttp/plugins/dynamix/scripts/notify -e "start_scrub_cache" -s "Scrub cache drive" -d "Scrub of cache drive finished" -i "normal" -m /boot/logs/scrub_cache.log else /usr/local/emhttp/plugins/dynamix/scripts/notify -e "start_scrub_cache" -s "Scrub cache drive" -d "Error in scrub of cache drive !" -i "alert" -m /boot/logs/scrub_cache.log fi Personally, I would get rid of the redirect to /boot/logs/scrub_cache.log. That way user scripts can display the logs. But, the output is not persistent and will be lost over reboots. Quote Link to comment
Helmonder Posted January 15, 2017 Share Posted January 15, 2017 The following will do a btrfs scrub and report back the results through the notification interface, I have scheduled this monthly: /usr/local/emhttp/plugins/dynamix/scripts/notify -e "start_scrub_cache" -s "Scrub cache drive" -d "Scrub of cache drive started" -i "normal" -m "Scrubbing message" btrfs scrub start -rdB /mnt/cache > /boot/logs/scrub_cache.log if [ $? -eq 0 ] then /usr/local/emhttp/plugins/dynamix/scripts/notify -e "start_scrub_cache" -s "Scrub cache drive" -d "Scrub of cache drive finished" -i "normal" -m /boot/logs/scrub_cache.log else /usr/local/emhttp/plugins/dynamix/scripts/notify -e "start_scrub_cache" -s "Scrub cache drive" -d "Error in scrub of cache drive !" -i "alert" -m /boot/logs/scrub_cache.log fi Personally, I would get rid of the redirect to /boot/logs/scrub_cache.log. That way user scripts can display the logs. But, the output is not persistent and will be lost over reboots. I allready took ik out on my side for the same reason.. :-) Quote Link to comment
Squid Posted January 21, 2017 Author Share Posted January 21, 2017 Quick question, I have a very simple script to display the cache scrub status so I don't need to keep refreshing it or go to the console: while true; do sleep 20 btrfs scrub status /mnt/cache echo done Any way to clear the log so that it only displays the last status, instead of one after other: scrub status for b675e964-7944-4715-9bb9-0425685b4e13 scrub started at Sun Jan 15 14:48:31 2017, running for 00:20:11 total bytes scrubbed: 1.37TiB with 0 errors scrub status for b675e964-7944-4715-9bb9-0425685b4e13 scrub started at Sun Jan 15 14:48:31 2017, running for 00:20:31 total bytes scrubbed: 1.39TiB with 0 errors scrub status for b675e964-7944-4715-9bb9-0425685b4e13 ... OK. Here's a demonstration script (but it'll do what you want). It requires user.scripts 2017.01.21a+ to work and shows a demo of directly utilizing javascript within a script to manipulate html DOMs, etc A new variable called directPHP has been added to signal to the UI to run the script in this override mode. I do not recommend any one using this variable in their own scripts without PM'ing me first. Assuming a base folder of /boot/config/plugins/user.scripts/scripts/test you will need the following files: /boot/config/plugins/user.scripts/scripts/test/script <? #directPHP=true #description=Demonstration of directly running javascript within the output. $updateTime = 1000; # time between updates in milliseconds $supportExec = "/boot/config/plugins/user.scripts/scripts/test/scriptExec.php"; # Change This To Suit. $unRaidvars = parse_ini_file("/var/local/emhttp/var.ini"); $csrf = $unRaidvars['csrf_token']; exec("cp $supportExec /usr/local/emhttp/plugins/user.scripts/scriptSupportFile.php"); exec("chmod +x /usr/local/emhttp/plugins/user.scripts/scriptSupportFile.php"); echo " <script src='/webGui/javascript/dynamix.js'></script> <span id='output'></span> <script> $(document).ajaxSend(function(elm, xhr, s){ if (s.type == 'POST') { s.data += s.data?'&':''; s.data += 'csrf_token=$csrf'; } }); var URL = '/plugins/user.scripts/scriptSupportFile.php'; var Interval = setTimeout(updateDisplay,$updateTime); function updateDisplay() { $.post(URL,{hasTo:'beHere'},function(data) { if (data) { $('#output').html(data); Interval = setTimeout(updateDisplay,$updateTime); } }); } </script> "; and /boot/config/plugins/user.scripts/scripts/test/scriptExec.php (Note that this file must be formatted with linux style line endings. Windows style line endings will not work here) <?PHP $command = "btrfs scrub status /mnt/cache"; # Bash Command/script To Run... Change To Suit $output = shell_exec($command); $output = str_replace("\n","<br>",$output); echo $output; ?> EDIT: Adjusted script to maintain compatibility with future versions of unRaid Quote Link to comment
Squid Posted January 21, 2017 Author Share Posted January 21, 2017 PacMan Play a version of PacMan directly on your server lol... And no I didn't write it. Merely adapted the program from https://github.com/bxia/Javascript-Pacman to work within user scripts. Rather pointless I suppose, but you never know... Unzip the attachment and store it within /config/plugins/user.scripts/scripts Requires user.scripts 2017.01.21a+ to run PacMan.zip Quote Link to comment
SpaceInvaderOne Posted January 21, 2017 Share Posted January 21, 2017 PacMan Play a version of PacMan directly on your server lol... And no I didn't write it. Merely adapted the program from https://github.com/bxia/Javascript-Pacman to work within user scripts. Rather pointless I suppose, but you never know... Unzip the attachment and store it within /config/plugins/user.scripts/scripts Requires user.scripts 2017.01.21a+ to run Ha I like it. kept me entertained for a while Quote Link to comment
JorgeB Posted January 22, 2017 Share Posted January 22, 2017 OK. Here's a demonstration script (but it'll do what you want). It requires user.scripts 2017.01.21a+ to work and shows a demo of directly utilizing javascript within a script to manipulate html DOMs, etc A new variable called directPHP has been added to signal to the UI to run the script in this override mode. I do not recommend any one using this variable in their own scripts without PM'ing me first. Many thanks, does exactly what I wanted Quote Link to comment
JorgeB Posted January 22, 2017 Share Posted January 22, 2017 Not a big deal but I'm getting a line displayed when I execute one of those scripts, is it normal? Quote Link to comment
Squid Posted January 22, 2017 Author Share Posted January 22, 2017 Not a big deal but I'm getting a line displayed when I execute one of those scripts, is it normal? Oops. Missed removing a debugging section. Doesn't hurt anything... I'll get rid of it tonight / tomorrow. Quote Link to comment
Squid Posted January 22, 2017 Author Share Posted January 22, 2017 Many thanks, does exactly what I wanted If it wasn't for the request, then PacMan wouldn't be able to run (or any javascript for that matter) Quote Link to comment
jrdnlc Posted January 24, 2017 Share Posted January 24, 2017 The .DS_Store script wasn't working for me. Looked into it and it needs to be ._.DS_Store not .DS_Store. Edited it and all good now Edit: Is it possible to add to the script a a status? I'd like to know when it's done lol Quote Link to comment
noski Posted January 26, 2017 Share Posted January 26, 2017 Enhancement Request for "Clear An unRaid Data Drive" script. I executed this script via the command line rather than the User.Scripts plugin. It would be good if the script accepted an argument to specify the disk to clear. It can still work the same if no argument present, but if the argument is there - simply check that drive only. I had 13 drives in my array and wanted to clear the last one. I was forced to wait for ages while it checked all other drives before getting to the one I wanted to actually clear. Thanks noski Quote Link to comment
Endy Posted January 26, 2017 Share Posted January 26, 2017 For the Clear an Unraid array data drive script, just how long should it take? I used it on a 500GB drive and it's been running for around 15 hours now. I used the run in background option and I don't see any sort of progress indicator except that it says "Running". Quote Link to comment
Endy Posted January 27, 2017 Share Posted January 27, 2017 For the Clear an Unraid array data drive script, just how long should it take? I used it on a 500GB drive and it's been running for around 15 hours now. I used the run in background option and I don't see any sort of progress indicator except that it says "Running". It's been over 24 hours and it's still running. Does it really take this long for a 500GB hard drive? I could have just pulled the drive and rebuilt parity and it would have been done by now. Quote Link to comment
Endy Posted January 28, 2017 Share Posted January 28, 2017 Well since no one is telling me that this is normal or not and it's been over 50 hours, I guess I'll have to see about killing the script. Quote Link to comment
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.