Creative Productions, Arrangements and Operations • Art, Technology and Amusements. Software Engineer and certified FileMaker Pro developer and full-stack web developer by day, https//www.kupietz.com
If the web server is slow, detect a SYN flood by netstat -ant | grep :443 | grep SYN_RECV to show the IP addresses leaving it hanging. Hint: If you're behind a reverse proxy, and that shows IP addresses that aren't the proxy's, then your IP is being hit directly. To find out how many IPs are hanging, do netstat -ant | grep :443 | grep SYN_RECV | wc -l. If you do it a few times and the number is increasing, you may be under attack. If it's over 100, that's suspicious, but manageable and the server can usually handle it, especially if you have SYN cookies activated. If it's over 1000, you're under attack.
To make a complete local backup of a remote WordPress install over SSH, you need to perform two distinct steps:
Download the files (using rsync).
Export and download the database (using mysqldump piped through ssh).
Here is the step-by-step guide.
Prerequisites
SSH Access: You need the username, host (IP or domain), and password (or SSH key) for the remote server.
WordPress Path: You need to know where WordPress is installed (e.g., /var/www/html or /home/user/public_html).
Database Credentials: You will need the database name, user, and password. (I will show you how to find these below).
Step 1: Find Database Credentials (Optional)
If you don't know your database login details, run this command to read them from your remote wp-config.php file: ssh user@remote-server.com "cat /path/to/wordpress/wp-config.php" | grep 'DB_'
Note the DB_NAME, DB_USER, and DB_PASSWORD for Step 2.
N8n by default binds to localhost, and even binding it to listen on all interfaces, it still by default listens only for IPv6. You also may want to tell it to not use the Secure Cookie if you don't want to set up an SSL certificate or sign up for their cloud service. Make sure you only have it reachable on the local network if you do this, you don't want to open your instance to the entire world.
Here's the SQL query to get all post revisions, which I do prior to cleaning them out of the database, which seems to make it much faster:
SELECT p.* FROM [posts table name] p WHERE (p.post_type = 'post' OR p.post_type = 'page') -- Include posts/pages AND (p.post_date BETWEEN '2020-01-01' AND '2029-07-01') -- Adjust date range OR (p.post_type = 'revision' AND p.post_parent IN ( SELECT ID FROM [posts table name] WHERE post_date BETWEEN '2024-01-01' AND '2024-07-01' ));
To get just a count of revisions, change SELECT p.* to SELECT count(*).
I removed a bunch of wildcard paths from rsnapshot.conf's exclude, and suddenly tonight my backup ran in a few minutes instead of taking over a day like it usually does.
Interesting, I've been looking off and on for at least the better part of a year for ways to lighten the load of rsnapshot's under-the-hood rsync backup commands, which reliably took up about half my CPU power almost continuously, and never found this tip before. You can see, plenty of wildcard paths removed, plus a few other things.
Here's a diff, rsnapshot.conf before changes (<) vs after (>): < verbose 1 --- > verbose 4 120c120 < loglevel 2 --- > loglevel 4 143a144,146 > rsync_short_args -Wa > #-W is transfer whole files without prescan, recommended for performance by https://serverfault.com/questions/639458/rsync-taking-100-of-cpu-and-hours-to-complete > #NOTE: if you set the above short…
I discovered rsnapshot hadn't run in a few days. Checking /etc/rsnapshot.log, I found every recent day had this:
rsync: --delete does not work without --recursive (-r) or --dirs (-d). rsync error: syntax or usage error (code 1) at main.c(1795) [client=3.2.7]
A few days ago I had added the line rsync_short_args -W to /etc/rsnapshot.conf in an effort to get rsync to run without putting such a load on my system. Removing this and running rsnapshot -v hourly from the command line shows that without it, the first line of the rsync command was /usr/bin/rsync -ax --delete --numeric-ids --relative --delete-excluded \, but with it, the first line was /usr/bin/rsync -Wx --delete --numeric-ids --relative --delete-excluded \.
Changing the line rsync_short_args -W to rsync_short_args -Wa, with an a flag explicitly included, solved the problem. Apparently specifying custom short flags overrides at least one of the default flags.
There are intentionally vague broad steps, here just as a reminder to myself; best to look specific instructions for each of these steps up at restore time for the particular system you're restoring to.
A.) Backups should include all user data. Depending on who you ask, that's either: 1.) The entire filesystem except /dev/*, /proc/*, /sys/*, /tmp/*, /run/*, /mnt/*, /media/*, /lost+found (which can be pulled from a complete filesystem backup with rsync -avhP --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} /mnt/olddrive/ /mnt/netdrive/) 2.)/home, /etc (except /etc/passwd and /etc/groups, these have useful information to back up but may conflict if written to a new install), /usr/local, /opt, /root, /var (exluding /var/tmp, /var/run/, /var/lock, or /var/spool except you DO want /var/spool/cron/crontabs/)
B.) After copying all the above to the new or restored disk, you need to update /etc/fstab with the new disk UUIDs.
Per numerous references around the web, to delete /path/to/directory-to-delete/:
cd /path/to/ mkdir empty_dir rsync -a --delete empty_dir/ directory-to-delete/ rm -r empty_dir rm -r directory-to-delete
Disclaimer: this is for my own reference, not recommended for your use. Use it at your own risk. If I am wrong—and I may be—these commands can do tremendous damage to your system.
I've had sporadic problems with clearing the WP cache causing the server to return 520 errors for a few minutes. Usually other sites on the same server are fine, it's specific to this vhost. Logging in via SSH, checking with htop, rsync is usually hogging most of the cpu. Restarting the fpm and then restarting Apache restores the website.
According to https://www.claudiokuenzler.com/blog/361/rsnapshot-backup-reduce-high-load-with-ionice, the big bottleneck with rsync, which rsnaphot runs on, is i/o, not cpu, and rsync can actually tie up i/o such that a web server won't respond to http requests. This can be solved by making the rsnapshot command in crontab ionice -c 3 [rsnapshot command] instead of just the rsnapshot command, which tells rsync not to wait until the disk is idle before trying to access it. So I did. In fact, I made it nice -n 19 ionice -c 3 [rsnapshot command] although…
Use code you find here at your own risk! I am not responsible if you damage your data or system by following any instructions you find here.
Navigate to your plugin's root directory:
Bash
cd /home/kupietzc/public_html/kartscode/wp-content/plugins/ktwp-draggable-elements
Fetch the latest changes from GitHub: Bash
git fetch origin
Perform a hard reset to match GitHub's main branch (assuming main is your branch):
Bash git reset --hard origin/main
WARNING: This command is destructive. It will discard all local changes to tracked files and make your local repository exactly match your GitHub repository. Ensure you have a backup of any local modifications you wish to preserve that are NOT on GitHub before running this.
Clean up any untracked files or directories (remnants from manual copying): …
This command shows your system's total, used, and free memory in a human-readable format.
Key metrics:
total: Total RAM.
used: RAM currently in use.
free: Unused RAM.
buff/cache: RAM used for file system buffers and page cache. This is good; Linux uses free RAM for this and frees it when applications need it.
available: The most important metric. This estimates how much memory is available for starting new applications without swapping.
Run it before and after: Run free -hbefore you increase max_children and then after your server has been running for a while under typical load with the new settings. Compare the available memory.
Add or change /etc/cron.d/sysstat to this. This creates a cron jobe to write file /tmp/outage_resource_log.txt that keeps minute-by-minute stats, sometimes useful in troubleshooting slowdowns. However, it's not a great way to do things, it create a small, constant resource drag, so disable it when done troubleshooting.
# The first element of the path is a directory where the debian-sa1 # script is located PATH=/usr/lib/sysstat:/usr/sbin:/usr/sbin:/usr/bin:/sbin:/bin
# Activity reports every 10 minutes everyday #ORIGINAL DEFAULT WAS 5-55/10 * * * * root command -v debian-sa1 > /dev/null && debian-sa1 1 1 #uncomment above line and comment out /tmp/outage_resource_log.txt lines to restore original functionality * * * * * root date +"%Y-%m-%d %H:%M:%S" >> /tmp/outage_resource_log.txt * * * * * root sar -u 1 1 >> /tmp/outage_resource_log.txt 2>&1 * * * * * root sar -r 1 1 >> /tmp/outage_resource_log.txt 2>&1 * * *…
For confused first-time visitors and other people still acclimating, here is a description of these little tabs to the left, as well as some other features of the site.
Open "Expert Mode" CLI Navigation - this give you the option to switch your browser's display to an old-fashioned terminal mode where you may browse this site, view pages and images by typing text commands. Just like how we used to browse the web back in 1978!
Open Visual Settings - This gives you controls to customize the visual display of this website to your liking: turn up or down the brightness, contrast, color temperature, hue, saturation, dark mode, and earthquake. Settings are saved per browser tab, so they will be remembered for your whole visit.
Open My Eyes - Have you ever been engrossed in your work, when you suddenly realize someone is staring at your screen, watching everything you do over your shoulder? If not, this simulates the experience.
Open Help - This help popup, silly! You just clicked it! Do you not remember?
New - Draggable elements! Several elements on this website, including these tabs, this popup message, and the "Hire Mike" badge in the lower right, can be dragged around with your mouse, to avoid them blocking content. Positions are remembered per tab, so as you navigate around the site, they will stay in the same place for your whole visit.
Enjoy!
CLI Website Navigation
Are you sure you want to switch to viewing this website in the "expert mode" command-line interface?
This will switch to a terminal emulator, load this page, and allow you to browse this website and view its contents by typing text commands.
Plus there might be, y'know, some fun stuff hidden in there. Just for geeks.