If you’re using CrashPlan to backup data on your Synology NAS in headless mode, you’ve probably already had to go through this update nightmare. This is pretty regular unfortunately; each time an update arrives for CrashPlan, the package gets broken in various ways.
Basically, clicking the “update” button always leads to a couple of hours wasted :(
Here’s how I fixed the issue this time, just in case it could help other people! Before you start, make sure you have a good hour in front of you.. ;-)
The commands are assumed to be executed as root…
- close your eyes and update the package
- start the package, it’ll download the update file then will crash and burn
- copy cpio from the CrashPlan package to /bin/cpio: cp /var/packages/CrashPlan/target/bin/cpio /bin/cpio
- extract the “upgrade” file: 7z e -o./ /var/packages/CrashPlan/target/upgrade.cpi
- move the upgrade file outside the Crashplan folder
- uninstall the CrashPlan package
- install the CrashPlan package again (don’t let it start)
- move back the upgrade file and put it in the upgrade folder (/var/packages/CrashPlan/target/upgrade)
- edit install.vars in the CrashPlan folder to point to the correct location of Java on your NAS. To find it, just use ‘which java’. Then put the correct path for the JAVACOMMON property
- (optional) rename the upgrade file to upgrade.jar (or whatever you like)
- extract the upgrade file: 7z e -o/var/packages/CrashPlan/target/lib /var/packages/CrashPlan/target/upgrade/upgrade.jar
- remove the upgrade file (not needed anymore)
- remove the upgrade.cpi file
- IF you have enough memory, then add the USR_MAX_HEAP property to /var/packages/CrashPlan/target/syno_package.vars
- start the CrashPlan package; it should now stay up and running
- install the latest CrashPlan client version on your machine
- disable the Crashplan service on your machine
- get the new Crashplan GUID on your NAS: cat /var/lib/crashplan/.ui_info; echo
- copy the guid (everything before “,0.0.0.0”) in the ‘.ui_info’ file under C:\ProgramData\CrashPlan (assuming you’re on Windows). You must edit the file from a notepad executed as admin. Make sure to replace the IP (127.0.0.1) by the one of your NAS
- Start the CrashPlan client, enter your CrashPlan credentials and passphrase (you do have one, right? :p)
- Now let CrashPlan sync all your files for a few days :o)
Hope this helps!
One quick tip: if you want to access sensitive Websites safely (e.g., your online bank, your taxes, …), then:
- do so in a different Web browser than the one you generally use.
- make sure that the browser you use for sensitive sites is NOT your default browser (i.e., the one that opens when you click on links in e-mails for example)
- make sure that your browser is up to date
- make sure that you never use that browser for anything else
- do NOT visit anything else (i.e., no other tabs) at the same time
- quickly check that you don’t have weird extensions or plugins installed (you could very well have been p0wned by any application installed on your machine)
- make sure that you configure very strict security rules on that browser (e.g., disable caching, passwords/form data storage, etc)
Why does this help? Well if your machine isn’t part of a botnet or infected with hundreds of malwares yet, then the above could still protect you against commonly found vulnerabilities (e.g., cross-site request forgery), vulnerabilities exploited through a different tab in your browser, etc.
Personally I use Google Chrome as my default Web browser and Mozilla Firefox whenever I need to access sensitive sites.
Do NOT consider this as bulletproof though, it’s nothing but ONE additional thing you can do to protect yourself; you’re still exposed to many security risks, the Web is a dangerous place ;-)
For quite some time, I wondered about this: “why the hell are comments forbidden in json files?”.
The short answer is: Douglas Crockford cared about interoperability (https://plus.google.com/+DouglasCrockfordEsq/posts/RK8qyGVaGSr).
The problem is that nowadays, many CLI tools make us of json files to store their configuration. It’s nice because the syntax is pretty lightweight and because it’s really easy to parse, but that’s where it ends because you know what? Comments are pretty darn useful in configuration files..
Unfortunately, as it stands, many of those tools (or at least the parsers they rely upon) choose not to accept comments. As Douglas states, nothing prevents us from sending json files through a minifier to get a comments-free version but… but it’s just a pain to have to do that before passing json files around; worse so when you need to have the file available on disk for some tool and even worse when that file needs to have a certain name (e.g., tsconfig.json).
Some tools do add support for comments, but then you realize that any surrounding tools must also accept that, which is often not the case or takes a while to get there. So that’s that, and IDEs which will complain if you start adding comments to json files (and rightly so..).
All in all, my opinion about this matter now is that json is just not the answer for configuration files. Since json does not support comments, then don’t use json, use something else, don’t try to hack your way around.
What should we use instead? Who cares, as long as it supports comments and doesn’t force you into hacks just to be able to comment things that need be!
If you’re in the JS world then why not simply JS modules? There you get the benefit of directly supporting more advanced use cases (e.g., configuration composition, logic, etc).
As all music copyright holders will tell you, adding music you like (but do not own) to family video clips is copyright infringement. As such, you should remove the audio track entirely to avoid getting into a lawsuit… or worse, getting your video removed from Youtube :)
The command below is will list all streams that exist in your video file.
$ ffmpeg -i yourfile.mp4 ffmpeg version N-60592-gfd982f2 Copyright (c) 2000-2014 the FFmpeg developers built on Feb 13 2014 22:05:50 with gcc 4.8.2 (GCC) configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libcaca --enable-libfreetype --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libx264 --enable-libxavs --enable-libxvid --enable-zlib libavutil 52. 63.101 / 52. 63.101 libavcodec 55. 52.101 / 55. 52.101 libavformat 55. 32.101 / 55. 32.101 libavdevice 55. 9.100 / 55. 9.100 libavfilter 4. 1.102 / 4. 1.102 libswscale 2. 5.101 / 2. 5.101 libswresample 0. 17.104 / 0. 17.104 libpostproc 52. 3.100 / 52. 3.100 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'yourfile.mp4': Metadata: major_brand : mp42 minor_version : 0 compatible_brands: mp42mp41 creation_time : 2015-12-22 23:09:46 Duration: 00:05:27.04, start: 0.000000, bitrate: 5836 kb/s Stream #0:0(eng): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv), 1280x720 [SAR 1:1 DAR 16:9], 5579 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc (default) Metadata: creation_time : 2015-12-22 23:09:46 handler_name : Alias Data Handler Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 253 kb/s (default) Metadata: creation_time : 2015-12-22 23:09:46 handler_name : Alias Data Handler
As you can see in the example above, my file contains two streams: the video stream (h264) as 0:0 and a single audio stream as 0:1
To get rid of the audio stream with ffmpeg, I simply needed to ask ffmpeg nicely to copy the file, keeping the 0:0 video stream, ignoring the audio stream and leaving the codecs alone (i.e., not trying to reencode anything):
ffmpeg -i yourfile.mp4 -map 0:0 -acodec copy -vcodec copy yourfile-silent.mp4
If you have multiple video streams or if you want to keep some audio streams, then just adapt the mappings accordingly.